- 在线时间
- 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
; u$ N: ~# |# U! ^ W1: array[1..8] of Integer;
2 u) [- L) N1 h/ ^3 Z# F$ j/ R W2: array[1..8] of Integer;</P>
1 s0 P0 w& ^% N% |" d# B; X) i< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);$ C8 e6 ]& } V' r% M' Y! x2 O
var
% l$ B" t7 W, N! k1 D; Z colwidth,Max:Integer;
/ R5 q7 U2 v2 |3 W+ Z( ` ^( qbegin
# n) ~3 J' R6 T" P3 M colwidth:=5;. G2 q; T/ T8 t; c2 o5 f
Max:=5;- D4 T( a+ c4 ]& L$ P+ U
if not(Column.Field is TBlobField ) then
, [+ w+ N0 o' h1 W! f Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName2 M5 _' F% B" k6 d* |
else) [7 H d1 j/ i; i
begin
3 I6 h& a7 @, b' f- N/ _ Column.width := max+50;
1 A8 ^) Z' t/ Y* {# H& C7 q8 g exit;. W5 t% t+ N8 P- i$ ^3 b
end;
7 A+ r4 t$ a, @ with Tadotable(Column.Field.DataSet) do
/ g; d; l- F0 Q# m5 K begin
! r& c! ~8 A% y+ r0 v; g: a2 d4 x case number of
8 @5 a4 q: c" f0 @$ W8 \& H, H 1: begin6 g! ~/ h, k) D) K
case Column.ID of
$ E+ @' ~5 D3 _+ C+ y+ p 3: begin
3 O* p, E8 e5 A; L+ j* I if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
7 j3 U& ?6 j7 K3 H Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
( I8 f2 L% ^* B, L4 Q else
# h- U, x/ ]5 P* _. a/ @ Column.width :=w1[3]*8+5;
( P) d- {# W/ H) Q$ a end;
/ ]/ j& y! r& f E! d2 I 4: begin
) K/ G- `& g: a; F if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then6 G2 R$ s4 W5 h" B) G5 I# e, {3 l: [4 t
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5' g8 B! I* H& x6 E
else) @4 J' ?- ~! X0 r/ h
Column.width :=w1[4]*8+5;+ i+ l$ B, I5 l3 g* U1 O; v! J
end;
3 i. k$ l& O5 p) f9 X* t 7: begin
, U! ^$ H0 `7 y+ g6 v# } if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
6 e8 O! T0 [0 j5 [8 N8 _ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5% E. x# g# ?/ C2 L3 H4 c
else
# G) C! a9 `& H Column.width :=w1[7]*8+5;
( D) }6 J& a9 \( y2 ~3 s end;$ F+ U) q) u5 e( s2 K- d
else" Q1 E# H. t9 r3 l& w% |- C
begin
( i/ h h4 A+ t& c( I" q first;) Z0 K$ l) E6 g* V" m
while not eof do( }* D2 m5 C. u, q6 K _$ G8 l
begin0 s+ z% g( m9 i+ k2 _
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
6 l1 s0 u- G; Q) J. R Max:=math.Max(colwidth,Max);/ Z: Y5 l5 v, X# R) E
Next;
! @8 `# r! U5 `2 F+ l- D end;8 ]$ L; S0 |% Y+ _( _
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
, f# y& }1 E( `; X0 `5 @* E Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
( [7 G5 ?$ m: B8 w5 ~. B! A else
( J8 z! v I9 j( t7 b# A: \ Column.width := Max+5;# \) @- ]: t- C3 l
end; m) S1 C5 P f! R( `
end;" i3 \9 f$ ^: j. y% k7 M3 }
end;
3 g7 c# ^9 S0 Z4 G( c6 ?7 g 2: begin
9 J7 {- ~( A( { case Column.ID of* D7 I$ e/ K q2 p; ? g
4: begin% t3 Q- Y, H. B* Z* X) C: ~. f
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then; K H$ H4 e* j5 G4 V
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5& N x! b# b7 p; }4 a8 y G
else- L" u; }, b9 t/ H7 p$ e6 I
Column.width :=w2[4]*8+5;
8 i( X" Y Y# a end;+ Q' O/ ^" I# ^: c1 W. ~% G, \
5: begin
# \) k6 a9 h- e# s+ B2 E if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* \- O( W0 Y8 t
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
! @2 i% n* m8 P6 j' \" |* g else
u' d; C9 v7 s, E' I g. l Column.width :=w2[5]*8+5;1 a: C) [) {1 y
end;. _1 U3 m7 L8 e
6: begin
6 ^+ m3 o. `3 [* O6 z+ o1 | if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
9 Y# P9 L, `( ~, W Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5+ Q% w8 r! t5 M0 D
else
- d; G2 `' Q# C& ? l8 U' E7 n* e/ @ Column.width :=w2[6]*8+5;5 o4 m2 J& E' D0 v' h2 h E+ i+ ]% ]
end;. L5 W0 _ P; b' l6 t
else
! ^ ?: w3 ^8 m$ ~ begin
# ?# S, j( Y9 e first;9 b2 Y, W: b1 x0 g
while not eof do9 c/ @( Q7 ~1 C) b
begin
5 b8 z# ?9 k; a7 _: }- V/ n. A2 r colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
, n% s% j# d; s' K! B. A6 D Max:=math.Max(colwidth,Max);
1 P$ v+ O+ ~5 L Z; T" a( Q Next;
. r1 O0 h0 r2 K# T) p end;1 B+ E; F! B/ B4 K O
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
# t5 u% e7 A- S Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5" n0 j$ B; K. _. e# R
else
) u) ]! j: ]! e" `0 w- A; ^ Column.width := Max+5;* {0 ] b5 A0 p% J6 m( i. G' L
end;
* [+ a2 h$ v" x% M; @ end;
' n/ U( n/ I- k4 q end;
; G. F6 @1 \# u2 m end;. n+ P6 p0 e7 j% {; O6 A! J' @
end;
- C- S6 X; ]% pend;</P>1 l" a: T& L# o n
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
2 ^' [# p7 f$ N, K% qbegin
" Z. L9 z5 w3 r% p Orderby(suiDBGrid2,Column,2);4 [& N. ?' U/ b$ t# O
end;</P>
9 Q% R, L% P3 D2 [9 x! j+ L% F< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
2 e7 ]9 S; ]1 Z+ u7 I O const Rect: TRect; DataCol: Integer; Column: TColumn;
: ?& V4 S8 [ q0 w9 O) p2 H State: TGridDrawState);. K7 k) W4 ]6 o T: j* K, ]* d
var
3 ^* u: _+ v6 L; W6 e0 @ DrawString : String;7 ?7 ?$ D: r, n! J# v- l
sys:TSysOper;$ N0 \& M5 J$ C
begin
! c% L& ^" q+ |/ t& e if (gdSelected in State)then" K' I5 J3 F7 s- B4 E! i6 ?
begin: h) {" ~6 O- j5 V; U: h2 V$ g+ `- x
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色* p0 b6 R3 H6 D! Y
end q' W8 X2 D7 L1 }+ h6 Z9 x
else
! N- k: h; \. S$ _: @9 N8 V' T suiDBGrid1.Canvas.Brush.Color:=clWindow;
9 f1 p" _% \0 F% G4 S sys:=TSysOper.Create;
6 E3 {+ G; G2 U" N try
z8 W2 I0 M5 x+ C6 x" m' { if Column.Field.IsNull=false then
, H" C2 M L z/ c# I begin
/ Z1 ?, V) t: Y6 A0 E! t( A) k case DataCol of1 Z9 {7 u3 s4 M% X
3: begin4 m1 F" u! \" P8 P& ]1 J& y. |+ K. q
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。- n# y7 `! U+ h& p2 a
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);' C$ {: Q; W, I, h$ ~, A+ ~# ]) v
w1[3]:=math.max(Length(DrawString),w1[3]);9 O3 h0 D7 \: a* a! _$ F, r
end;# D( ]( P8 m1 l( ]
4: begin
+ G# Q9 l! C/ G/ F. I% S' r/ M y+ @ DrawString:=sys.getLoginMode(Column.Field.CurValue);7 B, s* \! ?. J0 t8 p0 g
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
D% Q6 Y# L6 f" E& a/ O w1[4]:=math.max(Length(DrawString),w1[4]);! x. {" h: `; V/ u
end;
% y: |+ L* J0 W# _ 7:begin2 p/ B0 L$ R( o3 S2 k
DrawString:=TimeFormat(Column.Field.CurValue);6 U2 _4 A5 V) g: j: b5 l
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);# }% d% `# j- S7 ?* @ ]
w1[7]:=math.max(Length(DrawString),w1[7]);
6 S3 i4 o* h( G! Y3 U+ f end;# o+ x) Y4 `: _1 ~' f, I
else
! F, L2 ]/ O: a" ?$ i/ e suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
9 U; O1 Z. ]+ A( H end;
; W! d8 ^2 S& j, w9 x' v! T9 Y) N! f1 } end
& k+ n. i$ y K7 m3 S else
1 ], l0 g) T7 ~" h suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);: G8 [$ R: H G$ h, ]! o
finally
y" P" B9 v3 F0 u sys.Free;7 b' `2 x8 `' k3 x- b$ r9 h* e( r
end;- {6 @' b) X0 S# ~- H
end;</P>
8 `- F8 N" V0 p3 @; P1 o< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|