- 在线时间
- 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
* Q( N: B+ [7 {0 m9 F$ l& S. ~/ L" [ W1: array[1..8] of Integer;( Y+ I. T2 d/ T2 V
W2: array[1..8] of Integer;</P>
& |# b L1 M3 T$ ^$ d< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);8 |" P" i; I: T9 D2 }/ ~1 \) s( ^
var/ p( S9 i2 Q# Z7 j a, f& O# {0 n
colwidth,Max:Integer;
- T3 ]' a/ K+ L- \( V/ {1 _/ _ wbegin/ B5 o' Y( y% ?2 n: y
colwidth:=5;+ x4 F5 O S8 h
Max:=5;
0 C6 j4 x7 K1 K% i if not(Column.Field is TBlobField ) then% | Y% _/ H% u, U2 Y: e. H! X
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
$ k! v3 |, K# g/ j) H7 f else4 ~: @: W6 }$ @6 h2 g# z
begin
8 K! ]% P+ s8 ]5 I; H- b. [ Column.width := max+50;
5 B( \5 L8 M0 L/ B; B7 [ exit;
$ [% L* q N1 I$ L end;
! }9 h7 k# R9 g' x; o3 J with Tadotable(Column.Field.DataSet) do1 H; P; g- U2 c7 q/ ~+ T
begin0 z' s5 c4 n; D+ \5 l4 n; q, l
case number of9 K) Z6 s+ O O7 Q* Z
1: begin2 C m. ^7 f G0 o5 [
case Column.ID of
, S" u4 y$ s) m% V' U2 P0 ? 3: begin6 J1 L3 ?- p6 y- h u
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then( e5 e) g3 G% y! Y4 e6 o
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+54 x0 k4 a# A0 v) @) p' D
else
7 d5 ?! A! Q0 v4 |4 z* ? Column.width :=w1[3]*8+5;
; K( L: Z" n& D# a end;2 [, ] X4 A3 G& `9 o
4: begin
, b0 A9 \8 B" I+ {) k5 M {4 E if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then! {, R- C( u2 m3 _9 T
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+59 \5 o) G9 L$ o
else$ N( s8 s# f" B9 [
Column.width :=w1[4]*8+5;
% L( [1 V; a' y7 I' H7 k5 ]; G: C$ u* | end;( Z8 M- a3 W" e6 Z9 Y
7: begin5 M' Z1 D8 W- |/ a. q1 K0 w2 ~
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then' M" k$ a. g6 {
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ o. q( l$ ?' i! z& @: p0 Z
else
5 z8 G2 U3 ?7 z+ M0 y4 N. ~ _# ^ Column.width :=w1[7]*8+5;- s$ i, l, a0 b ~4 U
end;, h& q( z, _% l" W1 V; s7 D: Q# L6 m
else, W# w' Z; R% g- b# z
begin
- }' b1 f6 p$ r" H- u first;$ k( i3 }8 I! n/ Q
while not eof do
/ k2 X3 J) _, q6 ~; A. U begin
1 A, u+ T g" ?5 m$ P' f0 h colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
( x* k+ w0 [/ A" g Max:=math.Max(colwidth,Max);, M3 _; u4 E8 _9 t' D, [
Next;
% ^9 r5 q6 c* M0 i$ ^% d4 X! b& u end;
1 i- T6 @/ k+ X" q: C) W: Y if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
; A# }. Y1 K* ]6 I Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ X. T! z9 ? A
else
( N0 F# M. \3 O/ ?4 t* o Column.width := Max+5; I/ M* E; W F9 s
end;
) I0 J7 d3 d. D7 S5 H end;- x% N. H0 M/ u
end;: s B" M5 X2 O9 ]8 [2 c' Y
2: begin: o* b. e' a U7 ?# t
case Column.ID of3 T) f5 s+ O' h5 a0 y0 @
4: begin
# j& x) ^" J2 `" } if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
, g* F* x. [, i Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
7 ~+ H J" J ^8 i1 ^ else; A1 Y6 q7 [7 R6 _: O
Column.width :=w2[4]*8+5;
( i! A9 [+ Y+ [ m: x W end;
7 R$ I) g: k' Q5 ~- X/ @ 5: begin
" i* i5 `( q+ Q% ?& }$ Q/ N5 ]" U if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
1 K* m; @4 \6 c- C) j Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
7 C }4 w+ n9 {' | else3 }$ f: V, G4 Y
Column.width :=w2[5]*8+5;1 d) B( m+ k: P: p
end;
! W3 K5 u. |6 E/ v/ t 6: begin, b' T0 a& N* W; E- s7 c8 e2 {
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
/ K& N3 l$ [. f$ O% {1 ~: U9 M Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
3 o, i3 _% G3 ^' s1 @, J else
2 l; l4 b0 a% S4 y Column.width :=w2[6]*8+5; @( v# ~% c+ a1 W! z6 P! E& y, v
end;' j4 x% X8 b" e' V
else3 w; [6 H* |( |8 i e |; X9 y& S
begin
+ t8 m, e* F2 I) L first;* K4 e W9 E3 e' t
while not eof do
& O8 L' o$ v' ?7 N; [- T: R begin
) z& U; f( B4 C. ] colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
+ a+ d$ y/ V; ?, m$ n# M3 h3 h Max:=math.Max(colwidth,Max);
4 W( M& |- G# e& |6 ?! c1 m" ?! J' ^: K Next;, h6 o, q" Z$ M, @ x8 @) x' C* U4 s X8 N
end;
* c, l# S- E7 b# R* P5 O! o if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then# N% v. j8 k0 U* }) g4 n( ?) Q: K2 l
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5& `& }4 E8 a1 Q% f6 l* B+ w
else% l5 {, P% B# F* Z$ ?0 l+ |
Column.width := Max+5;
! R5 V& Q8 M6 }/ B0 m# J* |1 S |- m end;
6 F( }7 `: T/ i$ }4 ~$ C% C end;7 D) B2 p/ N) u( z
end;% T3 K# ~& H+ ^" I1 f/ ^ C6 B8 @
end;
- j; m& Q+ [; \# p end;
/ @& ^1 P5 K" p, b2 ]( }end;</P>
2 A$ e3 n9 B( p< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
! \- b/ h+ o+ G+ E; E" ibegin
) G( w: C7 `3 r5 e5 d Orderby(suiDBGrid2,Column,2);3 [! H& `$ j& H; z+ j6 f
end;</P>7 W" d2 E: Y" Z8 \
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;" t+ Y0 }: S0 R$ Y8 n3 a5 D$ G
const Rect: TRect; DataCol: Integer; Column: TColumn;
' J' \. c$ u" y2 a State: TGridDrawState);
4 a2 t" D9 U. m" ~! {var
3 x5 s3 u/ c7 L' f DrawString : String;
( V& g& I/ `: m( J sys:TSysOper;
0 M2 C" d# X9 L6 E+ I8 k: Fbegin, e' c; X s9 @& v2 e' W9 m
if (gdSelected in State)then3 l$ A3 I# c! H" z* _
begin
- K* M O0 @) {1 Q) A* ]+ u! Q5 o6 R suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
( F6 s0 h3 {, k7 J5 ~0 d- [ end- G' b) l; k( \- v. a; k8 d4 c4 o
else; t7 A$ z/ O+ `( A0 v
suiDBGrid1.Canvas.Brush.Color:=clWindow;& w: s0 x8 {; |* X: p& ]
sys:=TSysOper.Create; S( ]* U( I. s. Y6 U& }
try
5 N7 l6 M; o8 p) s/ z8 T if Column.Field.IsNull=false then! ?/ Y7 J! J% V4 ~& @ ?9 V4 ^" G
begin: \ y/ w( r* }* d. @
case DataCol of1 Q- d' A0 M# ~0 x; P9 j
3: begin/ k) D. j" L, Z0 m+ z2 R' I
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。9 K! Q. ~2 N4 V8 z! p) E
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
0 G& J- N5 }, p$ h; }% ^8 K w1[3]:=math.max(Length(DrawString),w1[3]);
$ c! p( Y" Z8 X7 X- ?3 t end;+ f- n' O# m2 W3 X/ m, _
4: begin
. R! s2 _+ S; P3 K; f DrawString:=sys.getLoginMode(Column.Field.CurValue);
! b% D8 T: K0 H* K1 ^% I suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
8 Q0 B- Z2 i* c# r% x. \7 J w1[4]:=math.max(Length(DrawString),w1[4]);
) U7 W! N& R7 [4 X8 x* S0 x end;
" D# }9 F, Y+ m$ _. P+ A C 7:begin
* n% o L% h( V) h' ~! s1 Z DrawString:=TimeFormat(Column.Field.CurValue);
( z! X" ?# x& H ~2 C suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
2 E' Z2 a/ [) m. v; G L7 L w1[7]:=math.max(Length(DrawString),w1[7]);
, T F& B* S7 [5 r1 P8 i end;5 |2 u6 D. R- E: j5 |8 w8 _
else
$ }2 c# b/ M {& i1 q- [. _( \ suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);4 e1 p# s4 z; _6 }+ w4 P8 U, L
end;( ?0 H- \3 b" y8 F+ H
end+ g4 H6 s0 X. I" @/ w
else
2 E: f% d" M7 z2 k4 S" P- E1 e7 a suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);. z6 N a% |" \' K$ F6 O* a, q
finally+ \7 S+ t [. m& o: Q. g
sys.Free;" i3 z' M% g% q6 N3 @
end;
* A+ I" E, B. r- k/ q2 S# M. [end;</P>
3 N% a6 a7 g2 u" E< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|