- 在线时间
- 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
: J+ @" ~4 ~2 ]/ s4 W6 X. w- ] W1: array[1..8] of Integer;
4 C" H3 `/ }) l9 x# f) C W2: array[1..8] of Integer;</P>, ?7 u$ x5 t: U( k/ ?+ I! ]8 w
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
0 L4 G- x; ^* d) {: Hvar1 D! F( }. _+ N7 y+ g) B1 t
colwidth,Max:Integer;6 T- b, k# P) D$ m
begin
' S* E; I3 @% X X, b5 Q. j7 Y colwidth:=5;: \0 m+ K3 N+ Z) B
Max:=5;
) J3 P0 X; Z# I if not(Column.Field is TBlobField ) then
# v, W1 `) ^+ t L Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName6 p' k% l. ~2 w9 v$ `
else- {7 O; k0 L3 Y7 r! {) U, O* c
begin
( D8 a, X2 c+ V# C( u% l: l, A9 l Column.width := max+50;
; t! H6 i. E4 t; R3 ^- ` exit;
, y0 H; f9 j8 [1 M, d end;
$ P% G6 G2 ] m' `1 t. [8 A! M( C$ w with Tadotable(Column.Field.DataSet) do
: u2 y/ z0 A% u: K begin
* v9 m; P/ K8 J" _ case number of
0 b# S, d3 {7 o1 F5 t 1: begin) J2 b0 I* b; g" T6 ?
case Column.ID of
' [: x7 _/ ] w5 c# \ 3: begin
8 O: x. Z. _" ^ if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then/ B/ z- Q1 x6 i4 X
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5: {# K3 K2 I' `" Y
else) B b& O- s3 h3 S% O
Column.width :=w1[3]*8+5;& I) z; d, d5 s) Z
end;
# z) w: t2 F7 N 4: begin
2 a3 E, D: _& Y( Q% u7 K- q& e! Q if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then& x: T5 `5 c6 ]0 e/ U* v- z
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+51 D/ j: Q# l: A1 [8 b6 B- U
else# u/ }% i ?" x" C2 Z7 {% v
Column.width :=w1[4]*8+5;
) J7 f9 I6 y: r$ e1 e. m end;
; x* ]8 p* {( k7 u 7: begin
& r4 L* W% A& Y6 ?( z) } f if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
' h, }1 G5 d( j' W4 t Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5% q2 k6 z4 Y* y- T. M" I2 A
else/ ^; `4 l6 c/ k& {
Column.width :=w1[7]*8+5; S* y- D/ n$ z2 E7 \. s, y
end;
1 M. {8 { ^8 o$ [0 V3 Y else. W2 y& M$ N3 O+ a
begin
& T' C q5 L/ y, o first;+ o" q: e3 Y, `
while not eof do2 w9 P" l9 R5 O( i
begin
% W6 K# S* O+ ^, h) z) i colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
. m: e9 {2 b% B+ e Max:=math.Max(colwidth,Max);
/ [$ U4 b) h8 K Next;
( J/ d4 K; a6 F" l) C6 N' t end;- o' k; d" b8 n* `
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
( Q3 R: T5 Q! D9 x0 b Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
& J t4 b9 q. s. W# ^+ ?' j! o3 K7 C else5 o5 {. O* R) f$ h$ b
Column.width := Max+5;9 C9 R) r0 S9 g: J ? z/ ]. k* r( f5 [
end;* o v! @% q8 x9 z
end;
, ?; D- q. \2 Y2 A end;/ N$ o$ f ]) A6 B, P# w
2: begin. |5 V# J) Y. N8 O- ?% M
case Column.ID of
) \: _+ c1 l, q1 B5 S3 U 4: begin! N; y1 q6 t: u( i5 k- V
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then3 K6 `; x% N& `7 }% i
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+53 _2 L$ W# B) j
else# U1 K6 e& r* n; m$ k* v/ j1 q8 i5 U
Column.width :=w2[4]*8+5;6 M# x- P( ]% D, b
end;- o$ s1 _: J) h
5: begin, t4 _) m6 }( f5 u9 T
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then( e! G" h0 t3 H% `
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; {3 c% s/ R2 G" _" j else0 ]+ d, P; a" T! N* l0 r+ k, @, t
Column.width :=w2[5]*8+5;4 ?1 r5 {) n- d1 o R
end;
4 J4 Q/ I! H3 G; |7 V6 \8 l 6: begin, c8 k; Y" h6 q0 S
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
4 o; j8 L+ G9 r. @4 N7 _ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 ?. l2 l( ^2 E( r5 {
else. c h" {5 e7 Q+ P) S5 G1 K& s
Column.width :=w2[6]*8+5;
# N( y0 M/ R/ S6 Z: `# f end;
0 {* F( _8 l) U else2 P3 y0 v4 F0 U0 O% t) e9 @, S, _
begin
, y1 e# M9 D6 f J first;
' f4 I- ^) L# J while not eof do7 J2 n5 i7 o2 H) \# V
begin
6 E& Q: `0 v6 J) y( W2 j6 L colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
2 h5 D' i9 I$ X( M% F Max:=math.Max(colwidth,Max);& m' W& }) J- U" J# E# Y
Next;; B8 K& E- g; B( t$ O7 ^
end;+ _* I8 |, I1 `5 ]0 T5 L: I) C1 E
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
/ H" z0 m4 e! H; A4 m# r, r Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
1 T" L; } n3 ~9 p else
5 b1 V) R& ^3 Z8 _ Column.width := Max+5;; a3 z( }' v9 X* `# F5 k3 j5 p
end;4 q* t4 @5 t, h2 y1 M# W0 x8 O
end;* X, {; w' v9 B1 ?- I( J; o
end; `- W/ L' g# o3 j
end;; K) k' g4 ]/ U! G+ d" S
end;
% r# \# K$ o: @8 Cend;</P>$ T, Y% ^ B. Y! K. \5 s4 q; m, w
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
6 Q9 |. q p0 u" U; i2 A7 x5 Zbegin
2 ?7 V% |: p2 s, Y Orderby(suiDBGrid2,Column,2);7 g c$ \/ O/ H9 K! {
end;</P>
4 n5 F% @& H1 j: a' n6 ]0 C< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
4 J9 X& r; V! T- C: {0 } const Rect: TRect; DataCol: Integer; Column: TColumn;4 g& i1 M/ g) I! `
State: TGridDrawState);
0 H7 O$ y7 J( qvar
4 u3 o6 l; `! D! }+ f DrawString : String;. d; r, i) Z2 L3 k
sys:TSysOper;
6 H7 F. a4 I2 R" \1 }9 nbegin
2 f5 N7 ?; j: [/ R9 ^$ h% S if (gdSelected in State)then# R4 {, Q" y/ P! S) ?* S
begin
1 q% o4 Y% P- h suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色7 d- p# C' _$ b
end
, E/ a8 v+ `3 G! v+ W8 X else, G: D S' n7 w1 ~* J- g r
suiDBGrid1.Canvas.Brush.Color:=clWindow;
5 a! i$ @: K2 U. S% x& c sys:=TSysOper.Create;7 Z& X" @6 L0 @( Q. ~- a
try
' M/ U, N/ x( V' X if Column.Field.IsNull=false then: G. N% }8 n3 Y/ S4 A! ^7 }
begin
* D& I$ a, N3 Q2 }4 O2 [- i case DataCol of
% v0 {9 ?3 S F0 x3 A( s( m 3: begin
% U7 l8 j' d! o6 A; y4 [# s6 g8 E# R DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
9 U2 Z: d2 o( x: h: @# K g0 B suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);5 J5 V. x. S% ?' C9 K
w1[3]:=math.max(Length(DrawString),w1[3]);
2 z, Z4 t- X b; T* R3 S, n end;
$ B; g) n3 D. g ] 4: begin
5 h0 W+ v3 ~ Z/ `7 i0 r4 L DrawString:=sys.getLoginMode(Column.Field.CurValue);
* n+ C/ {" r1 N1 c. ] suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);- _; ?# g' L8 P' g% @
w1[4]:=math.max(Length(DrawString),w1[4]);
1 V2 q- r: N8 x5 t% _ end; o8 U+ C1 y6 V5 s& A
7:begin
# Z4 U6 j/ H* @ DrawString:=TimeFormat(Column.Field.CurValue);4 p7 c N: m2 @8 k/ }
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
5 y4 ]$ F! o( O9 R* r. Z w1[7]:=math.max(Length(DrawString),w1[7]);
+ w, B: O- b- e" A/ x. h. n end; ], X5 n/ U& d G% K5 ~' y- t
else m: }, m; U% f H9 A# ~/ N$ U
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
9 V" Z3 d7 ~# b) k3 s end;
/ M1 O/ h" [, `+ X- ~ end7 z! e- k/ X* |: t
else
6 B9 M: ]% P0 i9 B4 I+ ?7 {2 s suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
9 J0 r+ Y! n0 ~( _$ { finally# D( E& B% W( \; C
sys.Free;1 O# ^, J2 q# s; V9 I
end;: H& v4 K5 O% v
end;</P>5 m( t2 v$ j3 _% D* u2 Y! k
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|