- 在线时间
- 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 }7 s8 C* Q$ S+ G$ P+ ^( \3 _
W1: array[1..8] of Integer;% D" O( |5 L0 S
W2: array[1..8] of Integer;</P>1 h3 r& T' I" O
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
_ N7 Q5 Z* {var
2 p9 s: k) K3 M colwidth,Max:Integer;
* }% {: X# m/ hbegin( A2 |+ M7 z5 m; Y
colwidth:=5;% \0 W' @: T! i; v/ ]
Max:=5;3 b4 n V7 w1 D, S
if not(Column.Field is TBlobField ) then N' \3 C7 c- X" u* ^& [
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName8 L& V1 H5 k" u! ~0 Z7 \' v: P: L( U
else3 p5 A6 t* A& q; I2 ]- R" T# O- S
begin1 E! \% |/ E1 f; [$ U8 x
Column.width := max+50;
( L' W8 x) _0 P8 B7 M exit;
* |; F9 `1 {" H# Z: U0 u+ J+ U5 _+ k8 T end;
# k9 L5 I. p n: l4 Q with Tadotable(Column.Field.DataSet) do- V. @( s* p+ l T4 |/ W( u
begin$ h& k% r3 r5 \$ C, t5 |, ]
case number of M, f) y7 b; m1 @3 e6 e
1: begin
8 y$ _: u. M) s1 d3 e: n case Column.ID of' a6 m- B8 \" P8 u
3: begin
; A% k( U) s" N) i5 ] if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then. R$ I9 `3 q N1 e, i' ?
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
. R' g; v/ Z1 `/ W- h# ^. u7 ]6 Z else
5 ^* v6 r0 j' t0 H Column.width :=w1[3]*8+5;
2 J" o2 Z+ [- k9 W; { end;. Y7 s: S6 t8 ^6 ]7 g. S8 G5 @
4: begin4 B; N( X3 K6 i4 }: D0 j. P
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then8 e& `1 k: q* T4 C# L! G5 G/ F) _
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5' t! T; q* w2 q4 z! m0 G5 f
else+ D7 |( @3 V; `) y- [" t8 ?
Column.width :=w1[4]*8+5;3 N8 @1 x! m: L; j1 s; \
end;
2 E; R ?) G e& x 7: begin
) g5 f7 l# O7 B8 L, F if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then4 u5 r7 H+ E: A5 J
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
. \ F6 ^5 L+ T$ c$ g/ A else
( [, E, b1 }$ C3 r% ]- _ Column.width :=w1[7]*8+5;
+ u7 y2 [. g. d end;
7 B, j; `% ?2 [' C. P. W else4 R+ d9 g( z! _
begin
, [2 E" L) W, q8 x9 E first;
) W8 I% _7 f* g while not eof do9 \9 F# m B( n" D! L, X. ~
begin5 n, N8 @+ E4 D9 G, f
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);/ I% _# L" w7 ^0 Z& }0 V
Max:=math.Max(colwidth,Max);
2 `8 j5 o& d. o0 E! T Next;
$ V9 w6 J1 M4 P/ i end;
& ]0 w7 A, U" z- e E3 r if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then3 s3 Z7 n+ C3 O6 u. f& @6 D
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5. W9 v, [8 a3 t: }/ Y7 i/ U3 O, O
else4 j9 h6 b1 @7 V, j+ j; x
Column.width := Max+5;$ I! P5 T0 t- L% v# ]" N# b) ]
end;8 l$ F& s+ t( E4 U" a( [
end;
- v& O% y* s/ M2 L4 s end;
) F' I% ?" k3 B6 |' u 2: begin
6 j4 K8 n( L3 n& J$ f# h& F, p* l case Column.ID of
& T% z. f- D$ K G/ T 4: begin6 S& J( W; n. X5 B5 ]0 ]' A* ^
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
5 E, q. i e! V9 C: n% Z Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5( S! |: p, ^" C2 [' l4 G! f" g
else3 r; J+ R1 A& E) ?8 r) h+ P
Column.width :=w2[4]*8+5;0 a- _; i% ~8 K- i; R7 I9 q
end;2 r$ r8 [- Q1 l" _- Y' |& b- d4 {: a
5: begin" C- j0 H1 K# Q: D2 K" x# ?0 X
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
, L5 ~9 b b6 @# ] v1 K Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
2 }6 D+ N: L+ T8 i* C+ ? v else6 f' Q6 w [' W1 h
Column.width :=w2[5]*8+5;
, ^# T( s/ x4 M end;9 L1 A, J) s- D
6: begin
* z$ J& L! w l1 n! B if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
6 O# l; [1 J, I# \% @% V, X5 x! n Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
3 g1 }/ m x# G5 h4 y else% A* v1 f" u) b9 b2 [) Q
Column.width :=w2[6]*8+5;8 p% ^0 v# {. Q. P7 C% U
end;( N( A/ J# C) M
else
& ?: w3 \4 d; Y8 u7 c begin
6 o& S! E# r* S first;
) z; {. C6 ?; w* x; p while not eof do
" B" A- C! T3 B begin& b9 ~: n" x9 B6 ^
colwidth := grid.Canvas.TextWidth(Column.Field.AsString); u3 I; t2 R$ l0 Z
Max:=math.Max(colwidth,Max);: [/ y, m$ |; H3 R+ M. c- ~
Next;
/ m* [* F, |. p end;! ^* d5 n9 T. Q& p( C" Y
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
/ L/ c- l5 l( ^2 _: E2 j Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ B% \- b* d3 \% j6 k. N
else
% d/ i. D% q& G) i Column.width := Max+5;6 k% ?9 F; l3 X8 l( Z
end;' x% L1 H' O7 p @1 @! ^
end;0 [8 n& }9 [% H! A9 Z0 A
end;: N. H$ n: q% F" a8 Q
end;- \. q% `; a2 W7 `6 `2 t4 D/ ~( f
end;
" v" h& ]' j {) K! o) C# bend;</P>
# K5 Y& y- {; o- K8 p< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
" A4 Y5 i2 ~& Q# Vbegin3 t& X) _6 o4 V- x
Orderby(suiDBGrid2,Column,2);: M) Q6 v4 D1 Y, {
end;</P>' `% v1 U7 c, H0 t' Q
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;' l% u" u( R% E6 B
const Rect: TRect; DataCol: Integer; Column: TColumn;
( x8 F9 ]7 Q% X4 m State: TGridDrawState);) W% z: C) U1 O, N( M7 m0 {, ~5 a
var
$ h3 j( \. L- h# ]4 u6 t0 I; ^ DrawString : String;
& e. h$ f3 C% b9 [4 W* E sys:TSysOper;* a8 c) \" @; T4 S% I
begin8 U1 R) B" F* F0 c. t+ p
if (gdSelected in State)then) O% {2 m& F3 H3 t* r/ L
begin7 q3 w: L' U% I
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色 t% f( y) A S1 E& A/ p0 b
end
& F" d: ]# j# U9 y+ u n: z else
6 H$ |! X# A4 R, s1 | suiDBGrid1.Canvas.Brush.Color:=clWindow;
8 R/ k# m: m: R+ ~: z sys:=TSysOper.Create;: T. l# H+ h& G2 s+ l
try
% a* z: N3 v# l% q& | if Column.Field.IsNull=false then$ ?+ u' X" \& u- g( o8 s1 d
begin" M2 t. t0 ` I8 n `* g4 u
case DataCol of
% n3 B4 Y; j: P& E3 a: @% X) s 3: begin8 a2 ~: t7 l2 {$ ~; }' k4 c
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
3 r" q8 w; ?/ l2 X' D5 X% n suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);- r# V, `8 P5 X$ p0 a
w1[3]:=math.max(Length(DrawString),w1[3]);+ g+ Y* |0 F7 i, f0 P. o6 c
end;
& f5 B) h/ L' d 4: begin! i6 _. i% T" E% X9 }; W: C% d
DrawString:=sys.getLoginMode(Column.Field.CurValue);) [$ Z+ ~. `1 ?8 x$ m7 |2 f
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);, i; ^6 D: u: V- Y2 p A
w1[4]:=math.max(Length(DrawString),w1[4]);6 t9 H% m& H$ R
end;& ?% Q A6 [ |
7:begin% \* j& m- D% S" a4 L6 r8 O. m3 J
DrawString:=TimeFormat(Column.Field.CurValue);- q, g0 z# S" b! y% ]
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
1 b, C# n3 w" k; e: e T w1[7]:=math.max(Length(DrawString),w1[7]);* h! k2 ^/ i9 l# S) h( P
end;. A4 d, s/ o8 ^$ h% N7 d- l
else+ j; v% `+ t% M4 y
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
1 J* `6 I6 f0 u end;( N R4 Q) a0 O8 k& u
end
( j3 `/ h8 K2 g/ @ else
5 w( D5 z( A# s- G- f! ~0 P+ F suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);; a! y: N/ @* s) h+ c7 u
finally9 }+ Y. ^. g0 V
sys.Free;9 G0 ~& m- _1 M( _
end;/ S, G8 T1 I) J. B4 h% t' @" }
end;</P>0 V- \6 S# w/ R
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|