- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40957 点
- 威望
- 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# ]2 @7 R$ D$ m
W1: array[1..8] of Integer;
- E/ `9 K! o8 Y4 t. j. O W2: array[1..8] of Integer;</P>, ~5 | H# }$ d9 u& S/ s( l
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
9 v+ E/ u( W7 O2 jvar! i- a- B; `2 N; W1 n& I$ q2 J+ J) C8 l% Z
colwidth,Max:Integer;9 J6 S+ j* T/ d2 T7 `. d
begin
" ]; a$ Y7 _, d$ C; _8 w colwidth:=5;& S( A! c7 H/ X
Max:=5;
" [! `) D/ I; a$ C" x! @, C if not(Column.Field is TBlobField ) then
0 A0 \. s W' z0 T+ |2 ~ {( F Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
2 @6 k+ n' D8 l8 B else
: P& J+ E" u+ z) w begin
) v4 O g/ H3 O% g8 Q( J% O" C( u Column.width := max+50;
. ]' {$ T# c. R; @ exit;
! j9 |8 B4 q: W) v* m% ^7 j end;
( V* \5 w- [; J! r& b" S" Z( w! q with Tadotable(Column.Field.DataSet) do
- W$ \2 s# J! |7 O7 W* d begin6 `9 o4 g8 L6 p; i' T* Q& r
case number of8 z* ?; o: x- T+ b$ t% s; H. b
1: begin" \9 V* C) P. X/ e; q3 M( g2 [- D
case Column.ID of3 d8 l5 Q4 D. ?5 ~) f
3: begin. T2 A0 ~" h- `* {/ a
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then) D6 F: S/ u; }6 a3 I I
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
* U4 v' R; I- y+ }; _/ c; }6 B- j1 ?$ ? else0 F; l6 }2 x3 @" D9 q
Column.width :=w1[3]*8+5;7 D5 C. i+ a, Z" S/ L, M
end;. M! U( F6 m0 e6 r+ Z/ U
4: begin# V+ X# z1 o! K9 L" y; a0 n
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
5 r+ t/ G4 X: X9 p Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
, R' u5 `% ]3 b' t else
; A) v+ M( m- n5 L: {* S3 Y Column.width :=w1[4]*8+5;
' E0 D- c2 K- ?9 J9 u* G end;
1 `* H9 N( c! j; ?: f2 v 7: begin6 v7 @9 W/ K1 l# @
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
9 ~1 I6 c/ l- n- _) ~3 d Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
/ e7 @4 B; S) j! X" A0 D4 N else
( `9 y7 B, R' D( o/ ?) o Column.width :=w1[7]*8+5;9 }4 T3 Q" s1 m
end;
% Q) A* d2 B8 e- Q$ f$ G/ _+ | else
3 `4 ]0 p2 W# z5 V5 g9 W7 l begin8 j* V* [* ] `& A) o% s9 w
first;% g7 r7 t# ]5 @) l: R6 o
while not eof do) g" j' @3 M! d7 ?- p
begin c; S5 ^8 c% S, T1 d8 J
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);; G6 b/ A5 ]$ j. ^
Max:=math.Max(colwidth,Max);
6 `( @: n" i8 M& a Next;
& j; ^ m% ]" {+ |. O end;7 H) n8 e! `5 u7 o e$ H
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
. }$ j$ u8 ]% u Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
6 l6 U. ?2 x0 Z else9 d; q+ D. p* u% g) \% o( S
Column.width := Max+5;
1 ~; ?6 K& U! |1 B1 s F end; Y$ m+ V' U7 Y3 t2 D9 \6 L
end;7 _4 [, E( B! C$ T
end;9 f( I' t* l8 \ _4 i- o
2: begin
3 i; e, V, _ O) k. q* r$ T7 b. a case Column.ID of
1 M4 ^/ P2 i* u+ p 4: begin9 d0 M% o) v g1 }+ a, @3 b
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then/ u+ e1 t( z6 ?2 K" l" y0 x1 Y
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; ]+ e3 u* n' L, r4 w% E else7 e7 r) `& d& ] ?& G
Column.width :=w2[4]*8+5;
- ?! X! r" U/ T9 Z& u; T% R+ l9 Q! a end;6 l8 c+ q& m3 }; i9 H1 w
5: begin' f- r9 v2 |$ g$ u' z
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* C6 W$ Q' @% {/ G6 S
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
- `2 q0 }. |2 v9 A3 b) v H1 t( g else
+ F7 T2 Y; u2 ^% y0 A Column.width :=w2[5]*8+5;0 d& `9 Z2 ^- O) [
end;
! M" }- `7 }5 ~* S3 m; W 6: begin$ ^* U: c7 u# k# Z
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then1 k6 |% G2 x ^
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
9 s$ g' w& W0 `, s' c else2 W+ W) i: [2 d& l! d
Column.width :=w2[6]*8+5;
6 {9 c8 Q g& E# q end;$ J3 `, |' H9 a; _
else" e: ?9 \% M5 H- }0 R* n9 M. s* {
begin4 O }0 O, ]$ }0 [ Z. g
first;
3 z1 R* {# P& f* v# N( n3 q2 [% H while not eof do
2 p @ V& E/ A5 Y/ ` begin
+ S6 ^5 W; S( U colwidth := grid.Canvas.TextWidth(Column.Field.AsString);* Z0 x* Z' G9 k# u; b
Max:=math.Max(colwidth,Max);! Z! }, R/ _7 K4 }. z
Next;
, A8 U/ I+ _* A" S: B$ B end;
$ A, }4 e4 e$ V# i0 \* F7 E: p. K if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
! o8 o' Q0 Y# J! u7 i: G9 s6 k$ p, J Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
- Y; V0 m7 ~; {$ v4 e else
2 a3 ?! ?; f) n8 y/ C Column.width := Max+5;) K! }0 v' v. l9 o
end;
1 A+ B/ p7 k- f! ]' k end;4 z3 B3 j( ~, X8 s
end;! W7 @4 M5 K8 }5 O, W/ S
end;6 H+ q. @* _5 R5 F
end;2 e; D: @5 v1 g, M& _
end;</P>. |4 [9 P3 M5 I$ m! s; a' I0 Q
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
8 m7 q6 A4 ]8 d; A* K* {* {begin
. n( P- {3 w. d- P Orderby(suiDBGrid2,Column,2);& K" @0 K0 J4 _1 ]& Y
end;</P>
/ C& r' M6 w* L) F) z4 i& K9 p< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
2 s# j- T8 a& k+ X* E+ Y9 p const Rect: TRect; DataCol: Integer; Column: TColumn;
, y" n$ K% v4 x0 v8 K State: TGridDrawState);9 {0 o4 @ z% R8 Q, O( ]% Z
var
8 @# i. }( j$ S% _; M0 z DrawString : String;
% Z- h& P! l* V) l% j) p/ T8 T( L$ s sys:TSysOper;
0 w0 W$ z( \% S5 @5 C1 obegin% ?: O3 Q+ j3 M' \8 N
if (gdSelected in State)then9 f3 a& y+ d7 X
begin
2 D9 d9 T; d% v+ X suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色8 n T# P1 q! U3 G t/ v+ B
end1 G; O4 L% s- ~+ e/ R$ o" {3 E% H
else
$ }$ N/ u6 {/ N+ b1 G, c suiDBGrid1.Canvas.Brush.Color:=clWindow;' ~9 C' [0 O! ^2 H8 I8 T) ?
sys:=TSysOper.Create;. B9 r) j3 g* X }& {
try3 H# I4 h- m1 K4 D3 P
if Column.Field.IsNull=false then/ G: R- I0 U6 U. F9 L/ c( h- l/ t* S5 I
begin* j& ~+ p9 S0 q3 g* ]6 ?
case DataCol of g6 F& C+ K1 Q7 J, [
3: begin4 |$ s" ~' O/ C; n9 F: @) k) a
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。* s* L" C. p; y4 u( T( E
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
+ O& r' [; t8 Z w1[3]:=math.max(Length(DrawString),w1[3]);5 k% H+ O+ t/ D% ?: H; n& R% y: U
end;+ @8 P" z, v5 j' [9 N' Y3 a
4: begin
7 r* s# d9 k/ @8 k6 O% c DrawString:=sys.getLoginMode(Column.Field.CurValue);% H5 [) [' ^" y6 q' l
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);2 B4 c# j7 l% P4 |! {
w1[4]:=math.max(Length(DrawString),w1[4]);- F- z1 `# E, O5 w3 J5 g
end;4 H% p9 @: z. \8 i2 }0 o9 L- m( ^% b
7:begin+ b+ B H3 o3 l
DrawString:=TimeFormat(Column.Field.CurValue);- {* [' Z: h( ?
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);6 U/ W+ H7 t7 S& B2 d# y5 R
w1[7]:=math.max(Length(DrawString),w1[7]);% Y7 q% p: n0 ~
end;. O( t- I, W C* g; T
else" p( L, w7 f; U0 x! O
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);1 p% d% y( u9 `# P& l, i, p6 E8 R& A! ^
end;
! }; d/ m/ A- J) Y# u end
; v! |% T/ V% Y k6 E- Y else
3 {' \4 x% J1 h5 _. O2 l suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
$ v2 Y \ z. Y: ~ finally% I, V" g: F% \# L+ O6 G1 }, h
sys.Free;2 R% p2 u5 h$ ^
end;- F4 L2 H, k) ^6 p5 _6 w+ @
end;</P>$ P; B- R! ^) F" h3 w" R- J
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|