- 在线时间
- 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
; _" G+ x, G# P8 Y2 u! f W1: array[1..8] of Integer;
" A4 T+ p8 m I3 K! Y* N6 ` W2: array[1..8] of Integer;</P>; @" F8 R4 Y& }3 R7 {2 e
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
& f0 S' I4 o- r& h; I' Avar6 F" V& Y+ a; M6 H6 X: Y
colwidth,Max:Integer;
5 k% Q% y9 X1 F7 B4 R, p: Abegin
7 `' C5 H) z/ F8 e colwidth:=5;" _0 ? W" |, {6 Q( ^
Max:=5;# W0 l8 X, m0 |- ?
if not(Column.Field is TBlobField ) then% n% H ?* h4 B$ A7 A
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName8 |8 s0 o: y/ W. O. k& `4 t
else/ N+ @& U6 ?' M/ z2 o+ W% R4 t& I
begin* L8 H( }2 o. G. F
Column.width := max+50;
7 R+ J9 v0 e$ Q. d exit;
; ]8 R7 o4 X; i* J4 t& g, @+ l end;- Q, W6 W; |! X1 w ^1 m
with Tadotable(Column.Field.DataSet) do% Y% v! z. s3 ~
begin
+ F7 @. w6 d" q. \+ r8 W4 } case number of; O( p9 P3 A' \9 l. s! k' N U# Z3 o
1: begin
1 }) G9 a" W7 b case Column.ID of) H# i' F) a3 `3 i. s
3: begin! ~2 V8 h/ P1 ]4 M( D
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then8 \7 M4 m; m3 H' M) k+ d/ B; D
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5" }4 m) y5 `. g8 f6 i3 j
else8 n. y+ Y" V) T+ U! B
Column.width :=w1[3]*8+5;/ d! ]0 l& S( P6 K, R) F/ Z
end;
3 ~( U6 q G# B5 Q2 j5 G 4: begin% ^. I2 S c4 R4 T& y3 A
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then/ ?2 ^/ t4 ^$ D: I$ F& ]
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5! M+ ~ i' A& \4 x% B
else1 O2 C! u) o5 W
Column.width :=w1[4]*8+5;
. b, J( |0 z- I% Y, g end;
9 b+ }7 E, D* e# _2 m# g& ?5 c 7: begin
( |# B3 f$ v8 \7 p0 C g5 Q* l if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
" G% C0 V! s: B0 F- d Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
* a/ r0 c @+ Q) a5 a& K else: v4 `7 `$ x9 K
Column.width :=w1[7]*8+5;
l- r: q" M# H2 l3 p6 E& r) _ end;
( g7 P5 E/ A/ Q% `( _7 _& N5 `# B0 @- w else+ s3 h1 R% ?) ]
begin
* q3 f5 t# z: b first;
/ g1 h; J5 B+ o* ^ `6 ] while not eof do" J1 e' p/ W; o+ l" s' `+ `
begin' h6 [+ S* N; |9 J) G% ]
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);0 F I! l. y8 h' T( t
Max:=math.Max(colwidth,Max);
, e: E. c b- r% f2 p9 z; {8 Z7 a Next;
/ b) N) T: ]; I9 I7 }& l end;4 P$ Q% }5 B Q7 s# U, P3 g
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then" @# m8 J, d- j0 I& g3 c/ [2 x
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5: \4 U2 ^7 T9 i1 M8 _, g
else
# P9 J/ e8 }0 F0 f" }9 j" q2 h Column.width := Max+5;
8 H* a$ ?1 y- E& K$ }+ H- T8 H end;# V- G1 Q& ]! \7 s0 Z' t
end;
9 ?2 Y1 m1 T1 Q2 n5 V8 z: [' E end;
S, g/ U; ~8 t+ X6 O 2: begin8 h( _5 q% _5 g5 X' b) S2 d' }/ _* q
case Column.ID of
' u5 m1 F3 [; C# B& Q6 Z 4: begin2 B, h4 K+ X, q+ ^0 e# i& ]
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
8 B; n: g7 Y0 j Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+50 R; w. S0 d5 C9 L
else
- F2 |+ m5 x1 N+ C* T: w Column.width :=w2[4]*8+5;
e2 c, j+ P9 h5 q U end;
F# h* A% F" u9 }+ _! j 5: begin
' N8 d) x% X5 b3 e; u if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then% Z D: n1 r4 }
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5- M" g8 c, R( @4 T% v
else; | ?5 e- m+ l. `
Column.width :=w2[5]*8+5;% z% f2 k5 X/ D
end;
5 g3 J0 C0 Y, [3 V8 ^ 6: begin
$ ]" p9 ?' b) C7 \ if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
8 {( c- t$ c0 H: J: k4 _ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5% `5 Q; C6 V+ y2 `4 @; R
else
8 z" q% O, L7 s. I Column.width :=w2[6]*8+5;$ U# y( c8 t, k$ ^ \" G0 u2 s) ~6 D O
end;
/ S. L2 Y' z; o else! o o% c$ Z$ k2 R! `% T
begin: r4 f9 F5 d( H" C% h* f' u
first;
8 [: T5 H6 ?! ]' k. S while not eof do
, T/ |+ f5 U9 O) u begin
) o+ j+ ^# i+ e, Y" u' Q+ C$ } colwidth := grid.Canvas.TextWidth(Column.Field.AsString);( |, R$ ~- l i; z
Max:=math.Max(colwidth,Max);
' o/ D8 ]; O& _3 H1 \1 f Next;4 {9 E7 b& g$ L$ J; r' u% R2 `
end;
/ `" d1 k+ E% C9 L0 X7 n if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
: E, H2 D" q1 k! y! g9 C Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 R6 b, V0 o3 k: [& ^4 R, b
else
& \$ Q c" o' z8 @8 i Column.width := Max+5;5 N! m+ X1 ?% l8 Z9 s- f+ n6 D' ^, _, }
end;$ I5 N5 ~( M) W
end;
6 m4 o1 W) e0 D9 _9 ? end;
! u5 e* v F# S4 J0 t end;
; v. P# p1 U( c4 D2 s0 e2 M5 Y* M end;; T% \ A4 J) ]" i
end;</P>: y0 `( y( D& g9 H& G
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
( F9 `, K, c5 {/ U- y+ G0 Nbegin4 p4 O) B1 H# ]1 T; V0 K) P' ~
Orderby(suiDBGrid2,Column,2);
: a, y" r! c% t) u! j) ?- m$ U$ tend;</P>
0 O% w( q1 E8 L2 F/ {< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
7 l: z Z# ?) Q+ ? const Rect: TRect; DataCol: Integer; Column: TColumn;
& L a4 L$ Z9 n( s State: TGridDrawState);
0 d- ?! U! C1 h2 Rvar
8 W& g3 a$ m3 h7 i7 a* I6 Z, z' j DrawString : String;+ n( I- d: Z2 R& R# }" \
sys:TSysOper;/ t" Q) v0 M( ~# F/ U9 I8 z
begin
- T7 O! ?5 E. {' F! E& U4 a0 j if (gdSelected in State)then
/ d9 G4 v# _0 j) N4 p begin4 ]$ }2 @$ t( ?! w# {
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
0 b! S; _. b0 I* T o7 j) u, x t end
- I8 P# `2 g6 }, {5 S$ G& B: s- P else
1 Z* q4 B/ D4 w: e, N5 I) H3 r suiDBGrid1.Canvas.Brush.Color:=clWindow;
, L; }, f- U; | [* n sys:=TSysOper.Create;' ~1 ^8 k0 r7 L' p$ F4 j
try
3 x0 y4 N& P6 L Y w) G: u if Column.Field.IsNull=false then( p b% [. C( t: e s' n
begin
6 M7 e* l& s" k- C9 i' ?/ R( Y P case DataCol of/ j; W" } o1 f) `8 I1 d6 t
3: begin
; E' x5 ~+ X( P' W DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
" i/ L) @. E1 B% B suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);! a5 [7 w$ b( Q5 d& s, j( p6 P
w1[3]:=math.max(Length(DrawString),w1[3]);
! X: A5 c4 c4 w0 V end;
$ o! b/ N- L7 c# l0 X: x 4: begin, e4 r5 X, d G$ C& Z
DrawString:=sys.getLoginMode(Column.Field.CurValue);
! }1 ?7 m5 l, X6 T& ]- H suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);" x0 z1 O* H b2 m3 y; g a
w1[4]:=math.max(Length(DrawString),w1[4]);
. b5 r! F: S1 f8 i+ t7 O end;
; n5 t$ l& o; M& ?) ~) R7 B 7:begin
7 \* J# X4 W& P, _ DrawString:=TimeFormat(Column.Field.CurValue);1 |, @1 n+ A+ I' Z8 o# B4 E
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);% x* d5 a4 v. l& e- ]
w1[7]:=math.max(Length(DrawString),w1[7]);- ]8 Y2 ]( V4 c& s/ j
end;
9 Z2 D# ^8 g U else
- p5 ?' |9 q) f) x O suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
" e7 L+ H7 l( [6 l- c( d end;1 F j* {$ Q7 r8 d( T
end
O( h; W, t( @# E0 z ? else$ b) y r0 a. e) I H
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
5 H6 l L/ U+ h6 h: g4 A4 I finally
! W7 w$ }% s0 M% p3 k sys.Free;
, k) ]* @! ?. A; P3 s5 o end;% N- ?% m9 {" d8 R0 }6 S) o
end;</P>
# ]' S( b" j1 ~9 P< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|