- 在线时间
- 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
6 g) J3 o1 L% D6 g W1: array[1..8] of Integer;
7 O7 n. ]: w+ U" o# t' b& [ W2: array[1..8] of Integer;</P>
% w) }6 k) x6 W; m {< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
. T" B9 j, a3 R1 W! ~var
' Z2 b5 ]0 I- A% y4 T! j& Y colwidth,Max:Integer;
- ^8 N$ w9 O' r) h/ p! Ybegin# M2 R/ y5 i+ r6 p; o7 c' s8 H
colwidth:=5;
6 w O2 ]. r C+ y# _# M' X Max:=5;) O/ S, t- w5 p+ l" W' h6 @' T/ {
if not(Column.Field is TBlobField ) then
5 b' h3 |; x0 Y# j8 t" d Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
3 f3 H0 O- a7 r; k& j else$ G/ N+ T2 m8 m3 J& P- P
begin% F8 r3 u- P* g. m
Column.width := max+50;1 D( y( ~$ L3 D# W, N
exit;: A9 h( s+ ]2 S6 e0 Q
end;3 M5 l6 Q, n$ a) H# K; S4 N$ `
with Tadotable(Column.Field.DataSet) do. }( E6 G' F7 v* `2 { Y
begin
" C& p @5 X7 f# m case number of
6 X) f) T- {* P# L 1: begin
9 h/ [3 h; D9 C8 [4 R g case Column.ID of0 s' C$ ^/ O" K% J9 e/ P1 f
3: begin
4 C; s9 |; Z: v5 O, g3 R if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
" B' B8 ]8 f0 U: z8 ^ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5! R$ R4 U4 u: H" I1 W o2 o
else5 f% U D; W( m! c8 n' z4 D6 h* }
Column.width :=w1[3]*8+5;% k6 D" K7 Z4 J: X
end;* `1 n# G. y2 ?) Q0 F
4: begin. y$ q8 K( F5 R* m/ x* f' |( z6 S* ]" |
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* l4 C5 d# b: c n+ C/ Z* a2 I2 A
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
$ B$ S7 O6 L' m& d5 ^4 a else
+ r p6 \6 w6 W$ \8 D) W Column.width :=w1[4]*8+5;
* K6 m w) k. l* i0 c% G8 Q end;6 @* t! K! Q* V# X X! a
7: begin3 R3 { Z( Q; Z7 F" B: h0 m- ?; V1 B
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* \) v5 P* m; o$ d e
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
! ^& I; [% m1 C8 T& p else
3 T6 M0 |$ Q) x Column.width :=w1[7]*8+5;
' ]/ A4 I, J; r& x/ _5 q end;( i8 S9 v5 K( H5 r
else) N1 _3 P* C: y ~
begin$ y4 o; ], q' t+ K- D5 a" s$ }
first;
& y$ @- J! Y# Y- {6 s! x( K/ D while not eof do) u, l0 G m0 B4 E2 O1 S
begin
3 e5 ]+ C( f! s- u" n colwidth := grid.Canvas.TextWidth(Column.Field.AsString);% N' R5 i) U0 `% W% i4 h
Max:=math.Max(colwidth,Max);
. A7 B7 d6 n" I Next;& L6 M O. q' C0 c/ _9 r
end;
) m$ ?3 ~- o3 t. W: y8 z# v if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
; @3 o9 @+ M6 `2 F5 E Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 K8 `7 [& B; t+ f0 i/ ?
else2 Y2 H; a, \! B6 B
Column.width := Max+5;
; h5 Y2 G1 A6 w end;
; U' I% x/ W, @0 v end;
& t! p/ W$ r$ M0 }3 P end;' b( o* f0 a# E6 B2 ]% [
2: begin/ W, V j* L: o
case Column.ID of* y2 m; X/ l: Y& N3 _
4: begin
) j/ z! u% G+ \9 r0 L# S if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
: A- }8 G) F* E: I5 V* v Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ l& a5 I1 M- ?
else w. _- y% a! X8 i. ^5 s/ e& t
Column.width :=w2[4]*8+5;8 u& R! Y, Q1 Q: ~: c/ |9 Y
end; E! I! v1 ]' S
5: begin$ E2 F& F8 h' o3 v) I# q$ Z; U
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then! B% ^' `8 q- A4 t
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
0 T) y: d; f7 `! _+ Q% R1 o else9 u) g7 {) G& g, k/ ~9 n
Column.width :=w2[5]*8+5;
1 V# ^5 q0 t( M; J2 X end;
, F3 f3 v/ h5 q: W 6: begin) [7 J" {. \6 b. K' h3 z# c
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
$ G! K3 R% ?0 O5 a, a Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5' R7 V$ G0 b8 M6 ^$ H
else- K0 J( }3 I* r' |
Column.width :=w2[6]*8+5;( q# y! W2 l# {2 ?5 w, ]
end;
, y2 X& O- l/ z2 U% e$ z q, e else
, ^ S+ }, b- x: \8 c/ L& a begin
6 c: B" h9 a$ G3 f first;
1 M6 o) m9 k, W" @% p/ ] while not eof do
9 L2 k6 D6 g- F0 O: F begin `: G# q% B. n8 V4 D G
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
5 n4 G4 ~ D9 @1 T Max:=math.Max(colwidth,Max);$ D8 n1 O/ n+ R& K b4 G8 O6 U
Next;
0 N7 o3 c* M5 v4 p& N% m( Q end;
4 ^8 G# p- k2 g+ }" W. K1 w if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then2 T, b- ?8 V; M
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
3 u! A* L2 V5 T: \, U& I/ W/ m else
8 a& x: E# y9 I/ l8 b Column.width := Max+5;/ r& G3 U3 y7 f6 K* P1 X* H0 \
end;5 z5 D& n. I# i
end;
' d7 J" Q/ o( }5 t, x end;9 [* v( W9 O% b
end;
. D% V% ~4 [( S end;. v6 w1 L) U% @0 n
end;</P>
& I+ @- E: Z9 c! X L0 r- G! Y< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);- F4 f p9 m! a( ]
begin
0 O( @; }3 }$ j8 x3 M" K! N Orderby(suiDBGrid2,Column,2);# G6 R: b" ~7 z; k! t& E
end;</P>: g, P% P! p) ~/ @9 M, N& d+ `
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
2 }/ I. u$ k' l9 P const Rect: TRect; DataCol: Integer; Column: TColumn;
2 q' b2 o) w, V State: TGridDrawState);
8 }1 V& L7 T. ?) I) M7 _! C: gvar
0 [4 L3 B+ G- k" x3 O7 l. b DrawString : String;5 L/ e5 h* q) R
sys:TSysOper;
9 w( L# m* m( z* S: Y( hbegin
6 l3 {! ~6 u) X1 E! R& J if (gdSelected in State)then7 C; ~3 o0 G- W ~1 ^
begin
, x5 X/ E, u9 Q- v0 K9 _ suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
& K6 |- J( Y7 X9 y) p end$ O. z! A A7 t+ A6 J' {0 C/ O2 }
else
9 K v! d% l9 \( W+ B V6 [ suiDBGrid1.Canvas.Brush.Color:=clWindow;
0 t+ i$ v/ K) ]* s" w: m5 s sys:=TSysOper.Create;
5 y. t6 Q6 A& y4 g. w try8 w/ W9 t3 Y; k. G3 c( G
if Column.Field.IsNull=false then
2 U9 ?5 G. ~- b begin0 F7 y l7 o$ ?1 o& Z
case DataCol of) v* L( W0 `# l# M8 V/ F5 K
3: begin
% [* V* ]& O" h# j# `3 |* d DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
1 a+ w& e5 y+ T5 U- P2 u: v. y; }: c suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);# B/ c1 G. J, }; N" i
w1[3]:=math.max(Length(DrawString),w1[3]);; O- U' h6 j, d" A* }8 s
end;: ]: ?+ d) B; W2 @
4: begin* d0 l- x' a- J4 ^" B
DrawString:=sys.getLoginMode(Column.Field.CurValue);
* j! S. I/ W9 ^" `. C, U suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);8 N; Q2 Q! D. y7 ]( e7 s- m! i
w1[4]:=math.max(Length(DrawString),w1[4]);. o( y$ ]: l4 ]- t9 h
end;. L$ b4 K& I) e, i8 {' q
7:begin
% `" D& L$ Q: x DrawString:=TimeFormat(Column.Field.CurValue);% W6 O9 b! s- g, u. ?! A/ E
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
2 a$ x7 ~2 p! V1 K. K$ Z. L0 x w1[7]:=math.max(Length(DrawString),w1[7]);% X% U& a& m3 K1 G5 v
end;/ T" F# j O* w6 y
else
- ^8 \0 F, Z' @+ R+ Q& Q& g5 E suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
& t- ~& |, {4 [5 u; B7 l+ ~ end;. g; u) a8 D. R8 \+ C* v' L2 q
end* N2 `% z4 _5 }5 l2 i2 Y1 P6 f# j
else
/ \5 g5 f. L, a suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
, P/ S) S3 t, A. u# b4 C finally
0 c3 p4 x0 j/ a0 i9 u% P1 { sys.Free;
2 a- |2 F. ?1 u8 m {- C1 j2 n- r+ H end;& c/ u# @5 S5 ]! v. h9 A+ |
end;</P>
9 K* p$ e; f6 Y< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|