- 在线时间
- 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, \9 i- p6 R) t$ |3 t, A4 ?
W1: array[1..8] of Integer;
: @9 F6 g0 Q3 M8 n: j7 r W2: array[1..8] of Integer;</P>
3 [# X9 V6 [; f7 `' y0 O8 J1 j< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
' ~9 m) x7 M# @: gvar
( c7 S" i3 i% V- S% p# g3 H1 ]/ r, g colwidth,Max:Integer;* o4 w9 |$ j0 r. x* a! \! ^2 T
begin# y& ^& W2 q S# y5 x' Q
colwidth:=5;$ D/ `9 i: E* x# P/ i/ S
Max:=5;- h+ z5 x' Z2 Z; ?
if not(Column.Field is TBlobField ) then
7 t m( O7 r7 r- ~" Q! ?' g Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
# ]0 v; N$ p! Q) y) `' p else) F( N2 W8 b# n7 Z ?
begin
# M. {+ |" G# J Column.width := max+50;
# t2 d( t9 i$ L1 X exit;8 v/ X) T( z7 [" A
end;" Y) [% U1 u$ {% N5 m' G
with Tadotable(Column.Field.DataSet) do
- J0 E6 p5 p5 k, w/ x9 Y. L5 J begin5 [5 b+ v6 c( I8 g( Z
case number of% I; \/ R3 c2 F4 N# ~; f
1: begin+ ~% d/ S5 C4 L& t# E- C; i
case Column.ID of' Z* m% v5 ]% l. N3 i: N
3: begin( e: H1 \0 S2 j- J+ r! h
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then5 h9 ^+ L* q9 t$ l1 A' S
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
" _( q- E; k9 U, h3 \ else
. l& f% l5 D: E' _" g' c Column.width :=w1[3]*8+5;
9 J% ^# l$ I/ Q8 L8 A$ r/ h7 n0 D end;
. U( h* g1 [. X% q 4: begin! q7 P0 R$ T" C8 @6 ]; g: [' P# ?
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then; w& `5 d& a/ u% d& i6 b: ]6 Z
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
" r* K4 X' z1 ?; F% J' K2 z7 s else
( t$ F' q1 _: [( T1 q7 w5 z Column.width :=w1[4]*8+5;
2 V6 L- M! P7 \) }* g end;
, M& W# M5 v# s- u 7: begin
: C9 _/ w$ r+ i+ k if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
& t8 F" w. `" \( z6 K9 L4 x+ ?9 L Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
& K3 i9 Y; s+ r4 m1 G4 u3 {7 I+ G* F else
$ k0 h0 {0 y% `' a' k Column.width :=w1[7]*8+5;5 D( O+ B5 _$ x" h
end;3 K. V+ q2 a$ Y8 X% |( N- E6 Q+ O4 t
else
- S/ o! L! W' C* e begin" h7 H# ?: @1 d( B
first;
1 O6 ?' i2 Y7 e( Y; b while not eof do2 [' ?1 J1 z- l0 E$ q: O. f0 g
begin/ T7 [' l$ H% x2 _, o" L
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
4 [( O4 s7 F9 l4 k, u Max:=math.Max(colwidth,Max);
, H7 |) Z8 a* Q! t Next;: O: G' e- }. l2 v, c
end;
+ v- f8 S" a$ Y, F9 p if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then3 t0 ^$ E* g: ^3 \/ i; B$ h9 y/ U
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5; o' Y' S4 O4 U/ w# q0 j5 @0 A
else
2 x5 u. _0 z1 @% K: F6 A Column.width := Max+5;9 u# l: o' U" V; i3 E$ O8 l) Q) R0 X
end;
, @) f- c# |. b) E; D6 ? end;
) ^2 s2 x" H4 G- [5 u end;( v; _5 [$ W5 j6 H3 {8 U9 b$ a
2: begin" W. T ~( b8 m- i, r; l7 r3 {
case Column.ID of$ D& R2 K/ D6 s
4: begin
9 a! ]8 D: f' J( ?6 `0 x0 C* ~9 _ if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
: T# K) e/ F/ ^# h& A) g Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
6 y- @$ A. b1 L3 T; j, F6 z else
; j1 s% U1 ]4 ^3 v3 B7 G Column.width :=w2[4]*8+5;) M) d7 z) y* Y
end;
0 O: e& O$ u% }; h$ m0 l 5: begin* ]5 b, ~/ ^- a' F
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
# z9 _& b6 M! s: e; `8 Y) I Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
1 n! I9 o( ]. S/ `* V# k6 O. P$ y else$ D% R" _2 I, B; f3 U; S
Column.width :=w2[5]*8+5;
# V* O4 E( u* N, { end;
* q5 U6 B* a5 Y 6: begin9 z ^: I- f" k4 x8 r
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
0 F+ j% M: L3 @5 S! k6 u9 a, ~+ ^3 j Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5* K) m: |8 {6 W9 d/ j
else
0 t: j8 B4 [% l O Column.width :=w2[6]*8+5;+ }4 [* f' I+ Z1 ^( ~ H
end;+ m; j! `. g8 ~6 ]* f$ L
else
! k' s: L$ S3 Y1 A9 D begin
; a& \# K0 N# \ first;" H' X' e: w7 @4 |$ A1 u- r; ~
while not eof do
3 m8 T' u$ ?% r |. O b# D begin
8 w+ p5 X# s# _8 o) y1 Q colwidth := grid.Canvas.TextWidth(Column.Field.AsString);, Z5 _# D) \( f, f. x
Max:=math.Max(colwidth,Max);1 {# a0 ]+ a' ]0 U* Q/ E# p" x' Z
Next;0 U1 I3 D& d3 T5 M
end;
; |- L( {4 y" i if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then! t( i8 L# V. p& m( h
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
) D n0 q% {/ K* m6 f7 T, p else6 F7 u# h! a7 Z4 x9 \/ c3 V
Column.width := Max+5;
2 H: J2 j( X9 G; R% D# e2 S9 G end;
) j7 W! A' U3 u end;7 R5 p' Y- i: c% ?9 b! k
end;9 \- C- }' }/ O" e% v! K
end;0 r6 k# \ T$ l. [& t% ^
end;
' j/ O/ x" w2 J* f% send;</P>* p) y+ [2 h# f ^) D$ A8 p
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);; U- c u, |4 F, m) k4 \
begin
2 s; m6 Y& a# {* H% [( j5 x( n Orderby(suiDBGrid2,Column,2);
! L+ _# |7 \7 r0 {2 t1 u1 wend;</P>
1 q0 m+ i1 w1 ^+ n8 ], n< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;) Z" i, g0 M+ u& {+ N) [
const Rect: TRect; DataCol: Integer; Column: TColumn;
1 m: Z, G( F9 i State: TGridDrawState);3 @$ b3 V$ z& P
var. P5 N) m7 Y, K' o- I/ w
DrawString : String;3 H0 }0 s/ {% @
sys:TSysOper;
9 F) u3 S/ w; B$ |begin" ?/ o$ m& T$ V8 y2 S( J& v' @
if (gdSelected in State)then5 C. C3 H2 A0 ]! o
begin
9 Q$ R6 C. a# H; h' m w) B suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
7 Q, a) E3 o5 f- ^ end8 V! J5 @4 k; F' T( w5 X+ _
else3 }! [1 u. _3 A- @. J
suiDBGrid1.Canvas.Brush.Color:=clWindow;
* P a0 l/ N K' ]% S8 w6 \) T sys:=TSysOper.Create;% B _) j, E! x' L6 y- _' z* l
try2 |& F" R0 M. B
if Column.Field.IsNull=false then
2 ?+ h& M ?+ N9 u/ j begin
% y( [) r4 X! g; ?) `4 k3 \& e- N case DataCol of
9 S# B) c: r" N7 m0 a 3: begin2 B1 m9 p$ m- T0 _# G7 y
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
0 x+ a7 H& E b: X suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);$ n- i+ o( o( I) [2 k$ F! a4 d' R
w1[3]:=math.max(Length(DrawString),w1[3]);% y/ B, K3 Q$ t. ?, H. V
end;
1 R8 @2 Z$ z, y+ l9 ] 4: begin
' S. V5 q5 M" _6 p" P DrawString:=sys.getLoginMode(Column.Field.CurValue);
/ G( D$ L7 n1 W/ i: Y$ W, v suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
3 Q, M4 X; M; f+ T0 X w1[4]:=math.max(Length(DrawString),w1[4]);; i/ K r2 c7 ^+ M0 d- G
end;
5 u$ o; i% V6 y+ t 7:begin
0 _& T" x: _% k5 Y7 F9 J7 H+ P+ k DrawString:=TimeFormat(Column.Field.CurValue);
& h. W3 M$ n1 y suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
1 U1 [0 R* w# I! _6 c w1[7]:=math.max(Length(DrawString),w1[7]);& d; ~! L5 q/ C/ w
end;: Q& C3 D7 W5 B" E
else
3 m; X: }) N7 ]/ }. s( H- z6 H5 U suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
6 F3 S- S0 U4 D+ f$ ]0 K4 w1 h end;
- }% X8 B' |8 ~% ]7 { R; |0 A$ ? end% D3 ?0 b1 l1 m: |
else
' M6 m' e9 r9 R- b+ \" |7 S8 i- y suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);; T+ M1 p/ I# I- g1 g8 q* C
finally, ~! X: `1 @8 l5 j
sys.Free;
) N; R8 L) t8 ` end;1 f4 |# `5 K4 Z6 T6 Y3 Z
end;</P>+ ]( G- U8 B; n4 d4 I' _
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|