- 在线时间
- 1957 小时
- 最后登录
- 2024-6-29
- 注册时间
- 2004-4-26
- 听众数
- 49
- 收听数
- 0
- 能力
- 60 分
- 体力
- 40960 点
- 威望
- 6 点
- 阅读权限
- 255
- 积分
- 23863
- 相册
- 0
- 日志
- 0
- 记录
- 0
- 帖子
- 20501
- 主题
- 18182
- 精华
- 5
- 分享
- 0
- 好友
- 140
TA的每日心情 | 奋斗 2024-6-23 05:14 |
|---|
签到天数: 1043 天 [LV.10]以坛为家III
 群组: 万里江山 群组: sas讨论小组 群组: 长盛证券理财有限公司 群组: C 语言讨论组 群组: Matlab讨论组 |
< >var
' v, L/ Q* S8 u& m7 G+ g W1: array[1..8] of Integer;2 J6 I4 e* G2 o- x6 r1 Z
W2: array[1..8] of Integer;</P>2 p; Y* W& B) r4 b
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);2 z4 c( W- u: [6 @2 H) W
var
6 H* }( x8 G# X6 ~6 F: j5 f6 o4 y colwidth,Max:Integer;! |, E# G& U4 r9 ^
begin
- j9 E6 R8 f' Z' C' Y colwidth:=5;2 j; E' y6 Z+ c9 O3 Q' p8 @7 Q6 l' o
Max:=5;+ x8 T4 a1 a% t* i; \" o
if not(Column.Field is TBlobField ) then
0 B4 i, `0 h# i9 b( d# P Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName r: Q5 S3 h- y* W* g+ |( l( P6 E, @. D
else
5 \! V& q: d/ I9 t/ V begin
M V7 g- t; G4 W" P! s$ i Column.width := max+50;) z# Z4 L: D& z- D1 e
exit;
0 O- J3 [. @: c2 B. g# C9 x; } end;+ {1 o7 h1 ~1 t& B
with Tadotable(Column.Field.DataSet) do
; [, u* q5 c+ T$ g2 q- D) n begin) x3 h# D0 } l
case number of2 o" Q! _9 k- w, {
1: begin
+ |) V7 Z3 e" m$ g$ W case Column.ID of% @: W% G# S4 s/ g' b
3: begin
5 p; P8 \+ f; Q" Y( V0 c# B. D5 } if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
/ S4 V/ Q) t/ A g% n( P' y Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+58 _! n& n [, B: \
else
+ r: d( X$ L* _ B+ q4 Q Column.width :=w1[3]*8+5;
8 ~) c* |* G- | end;
6 q; N$ m3 g* y- g" W" ?: S0 o 4: begin
- U1 H+ @$ G" V; h: N6 R3 ^4 [ if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then' K" b1 Z. G+ `6 Q9 w- u* e
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
# a" x3 o/ Y. s9 _: O. V J. } else/ H, Y' [/ N& h% Q5 M
Column.width :=w1[4]*8+5;
& w. g; ]+ z% o5 |! \ end;: ~8 D3 L1 {& W! j- }
7: begin, x5 y. L( k1 n% L! S
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then$ x) |, b) Q# c$ I; @* l
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
& }& F% y. Y& y( c1 J4 M! l) M else4 @% M' B! n* a1 p$ `8 ?% `( b; {* K
Column.width :=w1[7]*8+5;
! |0 m P( w, z" u5 N$ L) x! U end;
- [% w8 F2 v2 B else
' v& `) t4 ^0 a begin
: c& o' g2 R/ f( y" W: y: ]5 B8 o" i first;- I* E$ t+ L# F; x" C
while not eof do
7 i) V! u! l$ G7 a+ K begin8 Q2 a8 Y% I6 D4 B, P$ ^7 C4 U5 I
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
- T: x% r; s6 v Max:=math.Max(colwidth,Max);
* B, A. g; {" m Next;
# ^" ?2 H) i% R1 X& y6 Y0 ^: y end;
6 l( A4 Q6 f I# E: ^7 s4 @ if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
7 ]" G8 U4 Q j' A* ?6 ?! d Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
8 Z G8 \9 ^% M& R; c1 o% ~- O else
2 F6 @" s4 y7 K; _! j2 {$ ` Column.width := Max+5;+ T3 W5 I/ g' D( I2 f) ~/ e
end;
3 F, _4 f1 v: U1 @8 c end;6 S- X; r. g4 a/ }/ ?+ G' S& o9 k
end;
. t) r0 C* s5 L, |& t; \, R. J 2: begin
: ~# ]2 \8 y4 {1 y% Z case Column.ID of
1 F W) C! @+ X( n2 Y8 A 4: begin8 u0 P1 d) _/ c+ O6 r
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then7 X" ` w& f2 w; x
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
2 s! h- H* d7 m8 ^ else
/ Y6 [ g6 j( J2 j Column.width :=w2[4]*8+5;" p8 X* w# F5 l3 V) \* v2 V- I
end;
, W/ j, M+ E' y( m4 C1 \ 5: begin
6 L% W) G( o' w if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
- S! q- k. @; O Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5 R5 n1 v5 T; S. \* J
else' @8 o" `( T7 F' S5 i. Z6 @
Column.width :=w2[5]*8+5;
" [* m- [6 @3 D9 o: J- j end;7 ~3 P7 `3 |7 n5 R% L! V7 U4 M( Q
6: begin
4 P7 w2 G1 |1 _. \ if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then( O- x9 V) \& W. T0 t
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5. K: z5 d' _) o: b! h" r
else1 V/ w9 m$ n! h2 B
Column.width :=w2[6]*8+5;( \' K" F% u& L! i* p, `: l- v
end;
" I4 T( _/ A$ e' o( v9 K else& G& ~* ]$ x# ^ N6 r" ^8 |
begin. \! J/ |2 V5 H5 Y8 l
first;
% b }/ o0 P7 p) U' l while not eof do* g1 @8 T. u/ ?, J; c3 [; }( U
begin6 K8 S- s8 X/ b; X- f
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
% o4 u1 _# X! d" d Max:=math.Max(colwidth,Max);
$ A( m& Y. ^% R$ G5 m Next;
' s- c5 W6 ?3 P; [0 @7 { end;0 b( J3 T+ ~) ?2 E
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
+ x! p! O) \- A Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5- e' M4 N; k0 u3 E. j
else; _- B6 ` Q1 c
Column.width := Max+5;
0 R; E/ A4 h$ V, j1 E! h; q3 b end;0 _0 Z) }8 I5 f8 b1 U
end;2 i; k& e ~- c+ E& {$ H# w
end;: X- g( q) j, L2 h
end;+ u3 F0 d9 f# K! J3 F9 Q& @
end;2 i W j+ p, J B0 Y: l# V
end;</P>
% U0 Y! ?% u1 I8 w# h( F< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);% S2 a& \2 E) A; L
begin2 R5 f2 H) { b3 r( h! G; p
Orderby(suiDBGrid2,Column,2);2 Y, e! a) Z3 G7 N
end;</P> T$ i# @6 w9 w: ]# |
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
; x% l& P) C# m7 f; r& C const Rect: TRect; DataCol: Integer; Column: TColumn;3 t, X/ h" [& o3 n
State: TGridDrawState);, s2 J' [0 Z+ S6 n
var( |+ D Y k* t1 e% g) ]! e
DrawString : String;& _; I6 X9 i& X6 O$ @8 s( }6 h
sys:TSysOper;
2 F5 i( ^( s `1 nbegin/ u* C+ `! y. u, W: R2 j6 \
if (gdSelected in State)then
, m2 c$ w/ d$ }. ` begin
. k# l0 l7 {' K suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
|6 v! H+ b% ]. h: m$ T end
7 T/ l) l4 P" H) B- O7 |4 s else
# T5 e3 B T5 C suiDBGrid1.Canvas.Brush.Color:=clWindow;
5 W6 O( r0 E- r6 g6 y; e( T( e! k sys:=TSysOper.Create;9 E: _, k; e* S7 |- L' P1 @8 ]
try3 Z4 g$ Q; H' a& I
if Column.Field.IsNull=false then
2 f, Y( `+ `% E& L; J begin
# O& X7 g! j [7 u; \: f' H! n% J case DataCol of
0 ]7 Y0 z" f/ Y 3: begin: F* |; }9 E6 x( ]7 j, Q! t( W: X& X
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。& x" ^4 y% s: A% i: O4 y
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);8 b. X6 Q4 C# ~: j/ [/ e* U% u
w1[3]:=math.max(Length(DrawString),w1[3]);
0 |1 H, Y' G4 l, J# S q6 s( q; _ end;1 U1 n3 s* ] K u, P4 q
4: begin/ g/ K% w; q3 ^0 c0 P: \2 R/ y
DrawString:=sys.getLoginMode(Column.Field.CurValue);
9 |# f9 b/ V T4 A- f5 Y1 Z suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);6 }( w+ g! R& C6 G2 p! ~
w1[4]:=math.max(Length(DrawString),w1[4]);
. x( u7 U& M( I. g end;$ w" h* J% k8 @5 E1 r& _' O5 ?1 C. Q
7:begin
. v& f! ]2 O# ?( r) t: q( c: _ DrawString:=TimeFormat(Column.Field.CurValue);
! `5 f2 Y# h9 ?4 b7 x. f# u: B suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString); t! _9 n8 L( b1 ]* |/ [* O3 _
w1[7]:=math.max(Length(DrawString),w1[7]);2 S* ]+ m" X0 ^: |( H( M6 m1 |- k
end;
$ e s3 w3 o* V; U else5 C8 U( ]( W. v! G% e
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
! J! `, D q& A0 P; K1 m) Z% C1 k end;0 Z, E+ b# q) c
end
" p V( i+ r' f) V8 Q6 \/ S/ X else: N! g) S' o. _: D
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
. I& R* D5 B7 Z4 o* d' _ finally
2 ^2 b' @: C: M; a8 e! B sys.Free;
! v- Z; S7 p1 E* ^ end;; i* o2 P* S# a: a: c4 ]
end;</P>
( x: ?0 H- {) v* N ?" j< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|