- 在线时间
- 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
' g# K1 D* I% W) P1 ?& ^" k W1: array[1..8] of Integer;
+ A; m2 O8 W7 u5 N; T W2: array[1..8] of Integer;</P>! j4 \* s+ u1 m8 N9 Y5 j
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
" U/ R: R4 G& f+ G5 p5 j) {var
, L. h- h& y$ [3 T colwidth,Max:Integer;& K# a; q- n/ B( P L; m0 r
begin y1 `" H2 @) g% _( h
colwidth:=5;* S4 H! R" d# W8 h) _
Max:=5;
0 Q6 S0 W5 o' A3 {2 e; k* t: | k if not(Column.Field is TBlobField ) then
, @7 c. @5 D) H Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName$ m$ ]3 V; L8 |! y0 O& b1 h3 G7 U
else
3 l, _' W$ E; q2 }6 r begin
( V7 a: i$ u9 {0 ]( a$ `( i a. s Column.width := max+50;; t9 O* D# L8 G: I) d% G8 E9 a
exit;
$ k. L! K. i1 r6 l end;
0 u) ~4 o& h( m V+ F* [) F3 H with Tadotable(Column.Field.DataSet) do
8 `9 ?4 L2 b; R0 y' B& t/ r6 r begin
# E( k# R/ ?1 S: p; L case number of7 e6 {4 ?3 N. x8 x
1: begin- i' ]8 @" ]( b: p
case Column.ID of
" C! o' v9 |9 H( T# t9 K1 Z T1 u 3: begin
v( ^: _7 _4 J' y) Q1 o if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then8 \( L+ n1 i% `9 s' g0 ^
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5- d" A5 |- V2 D1 A9 A
else
3 j1 J6 O& Y4 Y) a s' t, t, r% w Column.width :=w1[3]*8+5;
7 {% d+ ?) s2 A+ m N3 k end;5 {6 y5 I) f& U
4: begin
4 c1 m- g1 E: B4 Y+ S3 w if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then9 s# L! y _8 _9 b" a+ X- }
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ p% a5 n; g: Q& A6 z5 Q+ Z' y
else
, M1 e" h6 S6 t Column.width :=w1[4]*8+5;
* S( k6 Q y- k, a' W- Z! m2 {/ r end;
' H$ j% J8 o( P: \- O 7: begin7 R! u0 _( z5 p" T$ Q
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then S5 y5 s5 Z+ H- r
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
( z2 a) b) V, e& |' o' r else# x, v: l0 [) K. ?6 U
Column.width :=w1[7]*8+5;0 e' ?# i& X8 ?% [0 ~5 |
end;- q- s ~+ x/ M% z
else! Q# o: b, Z% W9 b7 z0 u
begin
$ } P# u. c6 y/ X+ w. p first;- m9 R* v1 @6 [6 h ~ j
while not eof do7 C% Y- N% j3 J) `7 C, u5 J/ r
begin
2 T8 _* W T" C/ U3 z% f7 [7 O" } colwidth := grid.Canvas.TextWidth(Column.Field.AsString);) }, J3 w5 s: R9 _7 J0 o
Max:=math.Max(colwidth,Max);, ~: R7 u9 h3 b$ ~( O: d0 K
Next;9 A/ V# _3 H8 q Q! w8 _5 Z/ \% q. s
end;
+ X3 U6 x$ w: m if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
2 g4 I8 [! _1 p5 t Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5 `% v A+ r7 _7 W2 o& \ j
else
]& f; j0 F" `4 G! M2 V1 c9 N Column.width := Max+5;, A8 O, l5 A8 G2 M% {. l9 @
end;6 n' ^$ x7 U: }& R+ S
end;2 \% K: G- G I
end;$ S K A$ B4 j& ~
2: begin1 P. G) i& ]% @" e+ P/ v
case Column.ID of
; v9 `7 O$ u3 d5 M) R 4: begin
3 U. `: D6 D2 l! _5 ] if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
! e0 l# \" N1 |; Z- Y, y: F Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ n1 K D9 A9 r+ M6 |7 V; [& I" s
else
, R9 {& P$ d P/ F5 D( \3 k Column.width :=w2[4]*8+5;: w: r& C: a, E8 E
end;$ X5 m' A, C( A9 W# r6 ^# d
5: begin
+ y0 @; U" A- ]/ d3 n if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then1 `8 m8 E% c1 X: p; o/ `
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 s2 F! c- {3 C2 I
else
; M. \& P; g/ _ Column.width :=w2[5]*8+5;% B. }6 s& J# Y5 S
end;
: M8 ~* g, r7 N 6: begin; q; }- d" S% _- E9 y
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
: x$ v$ s0 J" K Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+52 ~+ { V1 ~! O' r) x/ [' K
else0 N0 x' {/ x& [
Column.width :=w2[6]*8+5;# ~ Z1 m( B* C# |, Q8 {6 z& |
end;" J) X) ?" J% J5 a% q& R" d2 U
else7 j, l/ o* X2 i
begin
3 [( l! y# P! v first;
' }9 O, z8 X' |6 o5 q/ R while not eof do& o) H+ J8 v* S5 i5 f, W4 V
begin; v+ ]/ z$ X0 N; @- H
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
3 g& h7 w: B6 j Max:=math.Max(colwidth,Max);) f' p8 \/ F; @, o, x" Z
Next;# e- i7 m O; X8 ^% Z
end;
! I( e( f, j, ~* v( Q L; o if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then1 d" e6 A" J5 o. ^( M7 d/ |( V4 e
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 ?' S5 e' w$ ^0 e0 `0 S$ h
else
`7 [1 u9 i" r Column.width := Max+5;
* N6 t/ C* R6 r$ ~% g- S3 ^ D end;5 J$ e9 R5 s# w" j8 n2 h1 s
end;9 P4 l$ f/ m9 w8 c3 S
end;
3 p4 m6 C$ @( t5 o# L end;
9 W- ?3 S8 i% B7 F# p/ I end;
2 W% r% E- t; ^4 C# q* X+ ~end;</P>
! W) Z4 u5 B8 U' F+ J; w< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
( \5 j* m9 G7 P2 `- @2 ]3 m/ v6 ]begin
2 o0 s$ T# }- x; c* ?" x0 r Orderby(suiDBGrid2,Column,2);0 s9 A" G. p) R" V n" S
end;</P>
" q& H2 w" L* t, ^' Q' r< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;5 d8 t9 T8 e' Y! z2 l& M. ?+ \
const Rect: TRect; DataCol: Integer; Column: TColumn;
' B3 Q4 B ^; s State: TGridDrawState);
3 n5 B7 K. s' ]var6 b J. \% E, v" Y: P
DrawString : String;, [1 C; }) D6 R, y" a7 H$ H7 Y7 _
sys:TSysOper;8 u& T0 m: G- U0 G4 L# y4 @
begin
9 s. H4 @, Y: @$ p if (gdSelected in State)then
0 `6 g* d2 L8 i8 b/ ? begin
, {/ K @; ?/ T4 ^8 r% g+ E% B suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色* ?1 l4 E% r& f& }# U- H4 [
end
. G0 u8 S* ?* W else: l/ U' Q, W/ I- s' j; M/ S
suiDBGrid1.Canvas.Brush.Color:=clWindow;; V4 c# d2 i( Y C0 B: H3 ?* O5 R
sys:=TSysOper.Create;
: M& I+ N T. Q0 B$ c( \ try$ w- F" M6 T0 l6 Y
if Column.Field.IsNull=false then+ G) R! s( x/ s, `5 r* ~
begin3 v) k9 L% v- o: v% F. ?& k: ~
case DataCol of' J6 l: p, n9 I
3: begin1 z$ X4 F6 a$ u' W
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。0 M. O3 ]1 B& m9 r
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
& X0 w) D8 L, m w1[3]:=math.max(Length(DrawString),w1[3]);
" O, I6 L: ?) n5 l! L- y: a end;
4 ^5 p- J3 y8 p 4: begin p' ]* R; d1 w/ [2 Z; b
DrawString:=sys.getLoginMode(Column.Field.CurValue);% u, S( `/ T: Y" {% k
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);. y; n+ q9 ~, R8 W& y0 _
w1[4]:=math.max(Length(DrawString),w1[4]);
' |7 w4 G6 c' y1 i3 J& d end;! }% c1 N2 X$ B+ r, y
7:begin3 Q1 x# W. ? X# e' k, _
DrawString:=TimeFormat(Column.Field.CurValue);- w' Y e* d; k$ e
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);: Q) z% w1 R6 C+ p3 ^+ a
w1[7]:=math.max(Length(DrawString),w1[7]);) W5 c: C) n4 Y/ @7 q. ]! [4 d
end;
" L% _- B: U! k4 q' \ else
& z$ E/ w' }& L' t) ^) c9 ? suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
3 O& e. N9 p" L4 B9 P. ^! O9 D3 \ end;. |) P" N7 _. K
end8 E( c3 g3 t8 M+ y4 l9 i! i
else9 z4 x6 }) \3 c: c
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);4 p& E7 h7 j9 U) X( {
finally1 S2 D) ^/ S J' h" o/ d" P) Q# Q
sys.Free;7 @' i3 q4 c# a
end;
+ S$ o# ~6 g1 Zend;</P>/ j+ V+ V$ F! h1 g/ V8 p
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|