- 在线时间
- 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
6 D: S0 m" \- I+ V6 S W1: array[1..8] of Integer;/ I) Z% w/ R( g* H
W2: array[1..8] of Integer;</P>, x3 ^" ?: h! q
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
- d9 E) w7 M) ?4 E, U. Q' Y' F( wvar" O' {" ?: {, h" C2 @- C. L h1 P: j
colwidth,Max:Integer;- R- c% _9 C9 j! @. V" {- e
begin* \! T' l2 |7 @- |% Y# K# @- T
colwidth:=5;
5 z j5 q: L* l2 _8 S/ w0 E Max:=5;
+ F9 i/ j3 {9 r/ e8 r( J, j$ G if not(Column.Field is TBlobField ) then, z0 W1 g( h, g$ f% U) r
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
& { w. \. R; T9 k. H else5 W5 X; h& Z4 J- B
begin
' N( C! I9 @, C$ F- ]+ |% u) t, { Column.width := max+50;- _+ M: X; Z' [# {1 ]) m$ m3 @
exit;6 p2 e3 Q0 _) P, `' L. H
end;
V( W# I& ?' W7 \* l7 | with Tadotable(Column.Field.DataSet) do
0 b: {, b- S! q* o begin2 r8 Q% U8 E% \- w6 v6 B- }$ j: [
case number of
" d6 f1 C, g) B% V 1: begin
1 O* V/ p; c [, \9 N( t5 z case Column.ID of3 v+ [& A. a }& k
3: begin
, x. @$ [3 X$ c* I. \3 r if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then- Z" k& o+ a/ Y3 X# C
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; f4 I% `* I% B5 k else
# P9 _ M1 t1 T" }' C1 K4 A, L( I7 @ Column.width :=w1[3]*8+5;! d8 D3 k# G8 }: T& m
end;5 z5 I& ?, c+ \) |
4: begin
/ f" C! j U" n5 d; Z5 p if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
+ H7 j* z1 r* U Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
6 ^8 }+ U/ Y9 D o- T) J- q else
0 s+ b) O& t! |$ x: i3 }# e! p Column.width :=w1[4]*8+5;, q d e4 V' ?) p: G
end;
2 m: h: G) k3 Y3 a 7: begin
$ w! V, w9 B8 Y2 D, n2 v9 x' Y if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
9 {8 C1 @) a! G Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
0 Z. T* n: l. U, e else" h. w2 }; V a0 j/ w8 x
Column.width :=w1[7]*8+5;0 W$ b# Y0 z5 P2 b+ U5 f
end;5 s1 s5 k5 ]4 J
else
' C2 Z2 o$ k1 l8 g begin: U/ i. n g* C6 a
first;
1 M j/ h2 H b _3 L while not eof do- t* Y/ q$ t! F
begin
( e! V( g3 B4 ~+ H: ` colwidth := grid.Canvas.TextWidth(Column.Field.AsString);4 l4 u) e$ i8 H. a5 {
Max:=math.Max(colwidth,Max);
/ E& U/ b7 a* M5 |# u- O Next;) q0 L3 `8 ]* Z6 |
end;
/ F( L$ V8 ]0 Y3 ?- R7 C if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then: h- a& [( L" z
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5: A/ o/ }+ D( q2 k' w8 E
else
$ X: s# }3 w% F; K# x# _0 T Column.width := Max+5;
' \$ Z2 X0 Y! D( Z( T end;
/ m) |5 |4 s2 D5 T end;
) i8 S5 d/ ^6 O2 S T" D end;
- O' E' _7 ^5 Z$ a5 j2 T' g* A 2: begin0 `1 c( y* X; Z9 H' Y6 v
case Column.ID of
; b; ~% L( w" q! `+ v 4: begin- w. s0 ], i) } a) N+ V ~
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then; _" W7 S0 K4 b4 h
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+59 _8 i M3 s! N) j
else! V+ E' V7 @7 A1 A9 p- J5 m9 z6 v
Column.width :=w2[4]*8+5;
: U: w3 u3 O6 T# M$ S- B end;
. k" Z C! k* M4 s) ?2 o 5: begin
- ^8 S/ H7 n2 m5 ~4 C" L if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
2 D2 x7 H8 u+ _: u Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
) z/ q1 q/ l; e* F8 I7 Y4 C else
3 {" |0 L+ y. E' R* H Column.width :=w2[5]*8+5;
& c/ T- ]) b$ x! s9 r4 g end;/ E9 Q% e/ ~! N h
6: begin
- R1 P; Y9 u* Q" ~ if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
* F. Q8 ^- W5 W) { Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5( y( Y3 F/ M$ S# a$ R; t/ C
else
2 o; ?* t* ]5 a Column.width :=w2[6]*8+5; C% ~+ C4 P0 `: M2 e" E# Q% V$ d3 ?
end;3 Z. f6 ]' ^% N- k4 a4 m4 S& Q! _ e
else
2 `3 @4 T( c; S% b5 S) K& b begin* a; W. s# Y) [9 g5 g0 s3 f
first;
3 L& v) }3 p2 P& s& B while not eof do
7 \5 R0 L) B& i6 l/ Q$ v begin0 n8 e" l1 [9 x' _4 a5 F
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);5 v( j9 z9 e+ u0 U6 Y4 w
Max:=math.Max(colwidth,Max);
5 j. _7 x \% p' K& y Next;
; Y6 F- s* e" p1 ~6 u end;
" ?1 V c- ?& d C% Q. A if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
" b( u9 {, J2 X( r5 O( C- ^: i Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+50 \; B, S# F. b! {4 g: A% a' A
else6 X4 i3 A. ?3 K' J1 a% R
Column.width := Max+5;
" c( h& C7 P: J4 ?* x/ s6 e$ E8 ? end;% ~. d) d7 _" |9 R+ L' T
end;; k, m4 [& N* m% j6 \, F+ R. ]
end;' V" f6 b) \* M/ ~
end;" Q2 l2 x# `6 Z9 W1 `8 q' r
end;" L) t) x/ C/ m# ]) r, Q9 D) ~" a
end;</P>5 V( i3 V0 N: F7 F/ x. q$ j) ~
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
7 C! l! R/ Y0 H/ z! c! ^begin
3 f1 b' [8 S/ y4 F8 P+ U. Y Orderby(suiDBGrid2,Column,2);
$ x6 \! K: D+ uend;</P>5 a* a: x6 u% ^* M# `" j, ?
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
7 n4 w9 K. y0 |, I% K3 i6 t7 c const Rect: TRect; DataCol: Integer; Column: TColumn;
& G1 @) B* Y1 w9 S State: TGridDrawState);
* U+ S+ B& L. O. P7 q5 Vvar
2 f7 `+ \) g4 c! S4 O' y DrawString : String;0 j# |& j) N8 U; A1 t- ^* O
sys:TSysOper;
5 B$ m+ |' ~& _8 Mbegin
/ B# s- {- L# o( B5 k if (gdSelected in State)then" Y# H( o, l/ S- x+ f( e2 ^
begin
c- ]. Q+ ?% I \ suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色; l( o, h" v' Z
end
' V. Q5 S- X' I0 { else
( A9 A9 ~" o( I. M- X+ X suiDBGrid1.Canvas.Brush.Color:=clWindow;$ O6 E( x% H0 L" @0 h: q
sys:=TSysOper.Create;
/ c/ y8 g2 @# U5 _0 p0 ~( e try
% a& g1 L' r8 G. {+ o7 ] if Column.Field.IsNull=false then
2 k% J. q& u+ ^! O* a- }! B begin( h2 z$ l: m! p* E/ P/ E4 r, w
case DataCol of& |& k/ B6 k3 A
3: begin
4 Q; A1 n1 J$ n6 } DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
3 k- H' E3 i5 A3 g$ P9 N suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
E4 {5 s. P) F# M w1[3]:=math.max(Length(DrawString),w1[3]);8 G$ D5 k/ G5 ]1 R& }5 g
end;
F' U" ~8 G! L. u) K 4: begin' ^" l q' Y7 B$ J- Z
DrawString:=sys.getLoginMode(Column.Field.CurValue);
" {! V6 k4 s0 M I suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);6 V) s4 r. l$ V/ \& W0 ?
w1[4]:=math.max(Length(DrawString),w1[4]);0 j, @1 ~6 I7 c3 M& N, O6 m4 e7 y
end;
/ W- Z3 W* Y# i' ?! C 7:begin$ e4 g9 x7 a: }- \! l& A& z
DrawString:=TimeFormat(Column.Field.CurValue);* s$ p& |: `) R9 x4 [3 n
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
" ~. d( R% d% u0 z* n w1[7]:=math.max(Length(DrawString),w1[7]);! s% s- p2 e+ T/ m
end;+ z! a- ~) h b" ]
else
9 Q5 @ J/ I5 V3 e2 O suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);, ]! j9 v0 K4 O- g; }9 y5 B
end;
: n% L3 ^. u; X; e% j( s7 o3 e end
C; l- q( }: [8 j$ W/ | else
, U5 d& K/ Q8 ?! i5 J% n" G$ S suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
! k' y) |) Z. ?% x+ a finally
* a9 L) I }4 m+ u& Z7 g sys.Free;/ ]0 \. v1 K8 q
end;
" B3 ]# C8 E" N7 `' Dend;</P>
" X7 P( G0 M/ J c% G# H< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|