- 在线时间
- 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
" i6 d5 }8 R, @/ K3 Y W1: array[1..8] of Integer;2 z; K/ L. d* ^" I3 P+ L T
W2: array[1..8] of Integer;</P>
* }9 n. O, f9 t< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
1 _4 \$ U. y& Tvar- {0 F P7 H, @1 v
colwidth,Max:Integer;0 {1 U& `' L& N: V% P2 g
begin- q7 x- K0 J0 @1 l6 p- o% ]1 \
colwidth:=5;/ I7 w9 t- c) C/ {1 y
Max:=5; H1 ?& Q* r- o& f/ T6 ~% L
if not(Column.Field is TBlobField ) then, X+ K5 {4 B! q/ F4 j0 v4 o
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName9 n% w/ Z) g$ T; V! y0 A
else1 o) v6 v* M: j) D O0 m
begin
7 X6 N5 e/ Y, j9 C, M Column.width := max+50;& R* {4 L3 p9 c4 g. M5 x0 Y
exit;
* o) K/ Y3 R% e" |7 C ?6 u end;
( i* D/ ~) X, `" k with Tadotable(Column.Field.DataSet) do
0 z4 a7 Q) y, a/ ` begin, f8 S; ^& \# w7 |
case number of# w& c" E E1 |9 T+ B$ \# o# S
1: begin
, z5 s4 U& L5 @7 W case Column.ID of
2 V6 p2 n" r3 H$ E# q9 @( H- x/ Y8 U7 Y 3: begin4 B% O# i. J/ |2 b
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
' k+ N D& @9 g+ S0 @( Z$ c0 @ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5- z. t- {& c3 b0 w# v* ]# j
else: Q! U. @4 D9 w: X* S7 F5 W
Column.width :=w1[3]*8+5;
6 N7 j8 p! x7 j3 J& @- n2 g end;
i9 \: \2 i2 N 4: begin/ C, k! M3 k y. X6 J
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then, j- w/ ?# Y/ s9 A: S) y% G
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
& k- q o8 a9 s else X" j1 e! ]8 v0 }1 c/ W
Column.width :=w1[4]*8+5;( f6 w W% y! \5 e5 H9 `
end;
: c' v% w/ n& V$ `# N) Z& i+ E% s 7: begin$ P, f1 P/ d# `% P
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
6 r, }: `. V5 @! n F Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
. f6 G' W4 B$ A# E! e else% ~) O, M- Q% t3 r
Column.width :=w1[7]*8+5;
Y4 X! f' Y1 c end;2 w, _& W6 m: V% l3 I
else1 q- O' }/ B9 b0 [0 k
begin6 ?7 J) p+ W; b7 Q8 X
first;. [! r; O: T7 d$ U) I
while not eof do
3 E. ^: a9 b0 Q2 g0 `* o v1 C begin
7 M1 f" ~+ ~: o' h$ H0 L0 y3 Y r colwidth := grid.Canvas.TextWidth(Column.Field.AsString);1 @9 c, Y* n! `7 {: J( o
Max:=math.Max(colwidth,Max);
/ `5 Y: I% {8 Y. G% Y3 @/ V- A, { Next;' l' h0 f- k1 N N
end;
( c. p8 }6 M/ M; M7 l" m" I: u if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then9 O6 a" L! G7 Z$ j6 f
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+59 E- I' |5 A i! Q! Z
else
' T$ F2 d- a; \4 Q, s" O7 J9 r Column.width := Max+5;( O( W1 j, t- S9 F( S0 u
end;/ n% H5 O1 M/ O) z& r
end;
: \3 `0 ^1 K2 r2 _ end;( A* x* X v" e d
2: begin' s/ i& p" D7 @+ u' [
case Column.ID of/ C+ c( E( Z& x. H9 B7 J \2 F. D
4: begin
- Q3 a9 M% h+ l! P+ v/ \6 v0 d if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
5 d8 F& c4 E# K, r Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5, T( w! ^: e! Z6 O; `
else
0 b/ q. Q6 w2 M7 R6 ~" `- u Column.width :=w2[4]*8+5;3 c3 i% A1 K' W; M/ A) ^- p
end;
8 I& a$ |/ d: g0 F+ X, w: n% q- O 5: begin1 I/ V$ s( o9 q: m3 I' a+ P
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
" q+ R8 a+ j. e: V Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
9 ^: J2 V- F3 R& h6 m0 y' r/ i) ^+ ? else
% e( k8 f/ `6 G2 t+ s Column.width :=w2[5]*8+5;! ^: ]8 K$ p7 R1 f2 I! }. S9 f
end;5 Q! f% V0 ?, _+ a
6: begin* Z; g4 v! s$ q) U% V( R
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
" N/ n3 y7 c0 h Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+58 q+ t; p+ n T/ [
else
: q/ T/ t5 O- G Column.width :=w2[6]*8+5;4 J2 C) Q# E E
end;
5 B; A, q! C3 `& ]3 Q, ? else' R8 d9 [* {$ f. {
begin
1 V- Z) h0 u8 l% g) k first;
) E' e: U! ?: H2 M1 s3 n* v while not eof do9 t# R/ d, ]- l- j: ^: n
begin
" ]" J! F2 Q$ i# t3 E0 X% ` colwidth := grid.Canvas.TextWidth(Column.Field.AsString);; K# _4 V6 X/ [# Y% z; l; K+ D
Max:=math.Max(colwidth,Max);
7 _, A9 S4 F/ i2 G( n Next;
6 c5 J: Q, ]9 p9 A end;
- N( E" W, h# h# U& u5 `* G7 }3 F9 s if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then5 \9 T. b% f# _& L8 B
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 t1 c D- y( O' ] V: d
else' A( h6 R3 `) X9 ]8 F( u# y) |
Column.width := Max+5;
6 x; Y. B" l5 F- L end;
+ e" _; R2 Q% d' X. U end;2 Y/ I. Z. l% W/ j( Y0 N/ ^
end;
/ _2 T& W, w& Y. W6 b; d end;: s$ V* ?. J, T0 c8 Q# h8 _+ I
end;: c5 M) Z) F1 v( M5 L
end;</P>& q, K2 d( p8 L, K
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
* V9 N7 S o" F- o- ~begin
# {. b3 b9 o; ]) Y' u/ u Orderby(suiDBGrid2,Column,2);/ K1 I/ [* Y/ v# m; \
end;</P>
- L2 ^2 |5 b5 Q: v< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
! [4 ^3 P: ^8 u* W8 l# Q5 b const Rect: TRect; DataCol: Integer; Column: TColumn;& M7 c3 m& D7 y( @5 G r
State: TGridDrawState);) v. @: U$ | Z4 N$ s
var: s- {* l4 W$ X
DrawString : String;
$ V8 X8 @7 b" C4 g% x sys:TSysOper;
1 d r0 Z. Y2 ubegin) Z1 F ]% S4 Q9 A6 L6 W5 p9 O7 F) z
if (gdSelected in State)then
6 e5 E" `4 S: Z/ R begin8 N, D6 P7 n8 h& ~) z; ]
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色6 V" T0 e. K, @, x
end
5 E9 v t/ l4 m* j x: }9 m else3 p" I1 l; H' ^5 f
suiDBGrid1.Canvas.Brush.Color:=clWindow;" U! w% j4 K0 c
sys:=TSysOper.Create;' h+ b k1 f; _! U- V0 `/ O0 @
try/ u5 Z" z S" q" f3 _) ~, ~
if Column.Field.IsNull=false then4 ~. m2 S' ?2 X5 q
begin
2 y# U+ j+ } e* B case DataCol of
' C: B, ?1 e; o 3: begin. p6 X0 H1 v; A% k3 i4 k4 |$ D6 o
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
2 L3 A( l, T N9 Z6 [1 T1 }' {4 [ suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
) J$ S: ^' {+ F5 ~/ d1 o2 p w1[3]:=math.max(Length(DrawString),w1[3]);
0 t* f# _+ x d; G end;
0 n9 ?. [$ H1 G l9 p 4: begin
]" D5 ~$ j' M7 \* } DrawString:=sys.getLoginMode(Column.Field.CurValue);
: L+ A# M! P6 Q- A2 \/ T suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);) R+ R* l# |; P
w1[4]:=math.max(Length(DrawString),w1[4]);# C; `+ U H3 X- Q$ M+ G' v
end;2 |& P# }: k- L+ @: b# ?) @
7:begin
% h2 ?. e7 H' L DrawString:=TimeFormat(Column.Field.CurValue);
6 b! v' x; ?0 R4 J8 v6 K, m% m2 F suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);% a' D4 a. L7 F
w1[7]:=math.max(Length(DrawString),w1[7]);
" S+ |; B* O' f6 ~5 s6 N) p. b8 c end;4 H" v. ]1 D# i- r
else
. W% [- z" l1 h: Y" ^ C4 l2 V' z suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);& Y6 o0 L3 x7 [ s) T y& D
end;
! x5 r9 F6 B6 m) j8 f6 U end
- [1 [8 v- g, A/ x+ | else
- H3 j; E/ W- K suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
" v2 r/ |9 q: n; v+ P( f finally
8 n" [3 C: D S3 y* M; o- h v sys.Free;' r- i! ^; Z& Y; n
end;
3 f6 z5 \0 c. A# P7 {end;</P>
8 F; @, m: H& C% ~< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|