- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40959 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23862
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 20501
- 主题
- 18182
- 精华
- 5
- 分享
- 0
- 好友
- 140
TA的每日心情 | 奋斗 2024-6-23 05:14 |
|---|
签到天数: 1043 天 [LV.10]以坛为家III
 群组: 万里江山 群组: sas讨论小组 群组: 长盛证券理财有限公司 群组: C 语言讨论组 群组: Matlab讨论组 |
< >var" X; M$ S* x( V
W1: array[1..8] of Integer;
V; h5 v# z" I! G' w W2: array[1..8] of Integer;</P>2 A0 S0 o) f W% S
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);7 t! X! l) L9 _; E" p/ q4 y0 @& k
var: s, A! y, Z) i# A! T
colwidth,Max:Integer;" N8 R% W8 V8 m3 ~3 j- n$ l$ j4 P
begin
' Z) L" c0 O2 q2 g& B2 J6 L colwidth:=5;0 w# M4 I/ f# x/ N* Z
Max:=5;, r7 b, f& A# w, H
if not(Column.Field is TBlobField ) then: U* l ?$ g3 @) S* H n
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName% ~7 C6 b$ E$ s! y/ L
else/ y7 W8 @, E& s: w/ E- n
begin
9 L8 C2 R7 w3 R Column.width := max+50;) w3 `! ?& Z7 k# Y" Y
exit;
( ?/ P0 P6 t! X0 c. b8 ]* I5 J end;
* [8 x% m- R( ~ `4 w; x3 M1 } with Tadotable(Column.Field.DataSet) do: A8 w1 K; Z/ j7 T
begin: Q6 S- o# g7 c% f3 F
case number of
6 B3 F) f* q0 }7 P 1: begin, @3 r8 b3 C; [$ x/ Q
case Column.ID of
. W' u6 h3 b3 h) ] h8 n 3: begin
0 C, A! {- T7 J$ Z if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
' S0 ~9 |, I& j! C Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+53 K0 L8 f" M4 u
else
' Z3 g/ y: t" i0 R- W+ V A; u9 t Column.width :=w1[3]*8+5;
, q. W/ Z8 ?/ h5 w9 b" X end;
4 h Y( v( {! L0 f. u; f 4: begin6 U. S* I) [5 O* H- x
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then3 V" Z2 k* K8 U
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+58 [" k0 N% [/ L y- n; o/ l
else
0 |2 ~$ c( Z: x0 d Column.width :=w1[4]*8+5;
6 t' c! {3 w" a+ G7 A$ O" w9 R, k end;( z# e4 W( u- t) n' v$ d! p/ Y0 x
7: begin
8 X. x+ }) l- M- J) h1 d- G if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then, `6 q8 M8 ^" `* y1 ~
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5- K, _- f$ J3 _6 c, T5 ?
else2 @3 O6 Y: o2 l/ w/ S# B9 x
Column.width :=w1[7]*8+5;
2 W" L# o& c- @- Z% R# M# } end;- k. T# G1 @* X; ^) q, o% N
else
- |7 K6 W& Q( b3 E" {$ _' T begin, N3 M) V* T! j+ }) W0 F# u: B
first;
1 p( m, h, s' x+ j while not eof do
4 p2 w* y0 o% v6 G! e' @ begin0 @+ D- \* e* F# @' Q, i2 _
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
; z' Y( t W N0 M9 S3 p Max:=math.Max(colwidth,Max);
. e" t8 u! d9 v" x% R \ Next;
/ e& s/ w& t2 O; q9 F; [: K end;" C: I; `; z- z9 N' F+ V
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then' o& o+ |' d- S( r8 o" h/ p5 z
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
* w" u E6 e ~ else
1 S" g9 R, M6 D$ e( {- u$ A Column.width := Max+5;
: M! I9 {# F; Z0 k( }, k9 a end;
8 `/ M9 X" c' v e. K& h2 Q4 x4 s end;
; I" i m1 W+ M; P1 C- N( q end;
4 M3 |* n& C4 H! |; K 2: begin
' n0 m) Q$ k1 [! o) [, e* h- Y) Q case Column.ID of5 C7 ?* o1 w' e& D4 n
4: begin
9 `# F# h( S$ p' G0 H if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* I" @# J: i: l0 q$ s
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
! y/ e1 w$ R# E6 Q2 b; L' Y else. K% }4 g5 `& ]7 ]
Column.width :=w2[4]*8+5;( U- \; K W8 S, Y1 E9 z7 N
end;
! n; a5 V9 U; s9 H1 V0 }7 d3 V 5: begin
0 l. K x* r! v. G if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
7 ]; u2 J7 R* {$ {4 M3 k; A% [5 q. x Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
% q( F/ E* p' o9 u else
# T' H9 k9 V1 f% k( Y1 @: E Column.width :=w2[5]*8+5;
1 I) _8 l$ P% \) I- d end;
- J0 T; x; U& U3 P& ~7 ? 6: begin) \& l; E, C, r- ~8 G; w4 }
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then2 e* Q2 ?: W0 b K" u4 V& D
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ R9 _2 Q. r9 X) H6 u* Z( R9 I
else; F/ q$ C% @' o7 ?: f5 O
Column.width :=w2[6]*8+5;1 }7 I. n: L' `( N
end;
- [; J& P3 x4 @7 G8 I2 \( [3 o/ c else t* b' `3 G( b" m
begin
" P1 `7 Y1 _8 [; f- G5 w first;
( ?6 R1 ~3 h8 o, v* J while not eof do( |- [$ O0 M. q* L1 k! p$ \/ H
begin
: ~, `1 s3 x' |) v colwidth := grid.Canvas.TextWidth(Column.Field.AsString); U ]# \, C! I8 C
Max:=math.Max(colwidth,Max);0 ?: `$ a8 ~+ z" ]. T% O) U
Next;# P! y, s8 k' s, b: K: S H
end;! [1 w5 {( T! t% B. S& z$ d
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
* n s; E+ [- e+ \ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5; A. j# q4 _- S, N: X0 j! P
else
! E( d1 l, L0 H. I0 m Column.width := Max+5; k# G1 w9 r# i! m- D d
end;
' R. N. [; R: |+ G* v& V; ? end;9 t" F q$ _$ s+ F
end;" d3 s/ l1 f3 P+ l, x% f2 P8 ]( M
end;
$ @: c A/ f# x8 Z/ ^" j end; r: D, {) }* m6 [! A ~
end;</P>
- m+ e. ^. d# a+ j7 U< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);* y$ }2 U1 ?- r5 t
begin7 }, U% ^. |6 z6 s6 X8 r
Orderby(suiDBGrid2,Column,2);7 `+ `4 [- l6 l$ r
end;</P>
, E% `/ s1 G8 t< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;; ]) l. D8 _ ?3 p
const Rect: TRect; DataCol: Integer; Column: TColumn;
$ J1 e, |2 p0 z$ J) j. x State: TGridDrawState);
7 W1 D9 C& Q5 ]" g' K, Q4 Uvar8 C6 M; v% B! d) X
DrawString : String;1 C) h* \8 P7 F6 V! O
sys:TSysOper;3 o! S7 ^6 G- Y2 S. `! @
begin& j: D6 p' x7 J* p% L
if (gdSelected in State)then/ g4 S3 ]- _% L- R8 J
begin
) b7 G8 \# y9 d( v' C) s1 Z suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
: I$ p; p% K3 `; O% R& v& k; h7 M' o end
# @; @' d0 [3 W) M3 P else
3 F% R' l: r6 Z/ _4 m6 d suiDBGrid1.Canvas.Brush.Color:=clWindow;9 S& Z" _' y# B0 B( O3 s- Z3 P' z
sys:=TSysOper.Create;' O" _& \5 I" E0 d4 q
try% I9 g2 _* h& c& [# ]( {( I
if Column.Field.IsNull=false then
- y; F. U2 b% N" p) D begin* k8 e% Y8 m4 P+ C9 l9 m1 t
case DataCol of
( J* J. P" \! H/ }7 ?- W: ] 3: begin
( t& g( B, t+ m DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
2 p. }0 ] ~+ T6 t) j suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);" t6 ?/ D) h! x) L1 Z! `
w1[3]:=math.max(Length(DrawString),w1[3]);8 U7 k% ~! j+ j
end;2 H& L$ Q/ m( K v
4: begin; c5 \4 n% \) C- S' G2 x
DrawString:=sys.getLoginMode(Column.Field.CurValue);; f3 {1 Q3 V$ u, q8 t" ^
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);/ }/ z: ?2 O+ t, S6 e$ Y' {7 c
w1[4]:=math.max(Length(DrawString),w1[4]);
& I& e$ c' f5 Z) x. t0 v5 [% b3 p! l end;
2 ?& d8 z( N, W/ H7 t& b' y0 Y 7:begin
8 x' o6 n3 o5 r: V' c. t DrawString:=TimeFormat(Column.Field.CurValue);" F9 E/ A$ k+ Z! ~6 S9 o' z3 s8 m
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
- z# l% e2 }% D1 g0 ?% a$ ` i' e w1[7]:=math.max(Length(DrawString),w1[7]);
( r8 o; N) z7 j7 W O, e" k! { x end;
% C# j% n# e$ d Y2 c, Y3 I else
/ x0 Q5 L( c/ } suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
4 A! q( u; X! @( W# {0 Z0 q end;) n, i( m+ j0 }8 ?" n
end
6 o0 e: w% n1 Y: \ else& O+ k5 V7 O- v% ~2 @) `$ y! W; ?
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
) M) \$ {2 a. A: s/ S$ ?' M' | finally
8 I, _2 p; ?8 Y1 \6 y9 R, a sys.Free;: J/ d' C0 l( S ^0 H. I W( S" |
end;8 j& m' ]# S% J `* B
end;</P>: D" I- X) ]& G% Z7 V$ f1 f) r) s
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|