- 在线时间
- 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$ O/ \9 C4 u$ \ j$ J+ ?
W1: array[1..8] of Integer;- p3 }7 S: R/ b0 r; ]$ X
W2: array[1..8] of Integer;</P>
* w5 z7 Z4 w0 |- Z9 t< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);/ i1 T F' Q: D/ I. I7 s
var7 p. T! H2 S5 a" m& \5 p( r
colwidth,Max:Integer;
. ^$ V2 G. R5 o" G+ I% ybegin
9 J* n) A6 R" g( Q3 I! z colwidth:=5;1 V6 \+ n/ ]3 ]
Max:=5;
$ Y7 \* a8 J0 w X: _. k7 n* ~ if not(Column.Field is TBlobField ) then8 G# [9 `( _% p5 B5 e/ k- C
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
* ~$ m( y* h# K else9 g# t0 P/ q8 k1 [
begin
. U2 l% h( j2 B% a! r( K8 H1 b Column.width := max+50;! P e6 e6 d8 u& L. m
exit;; Y% B0 A- j/ R* q! p; {
end;
6 S9 H* r8 }0 d/ B with Tadotable(Column.Field.DataSet) do
! J" T9 H7 _5 @) o8 e h begin' b3 h- W2 C) F/ g3 B0 v
case number of
* b& v8 E% f3 @+ V% p 1: begin4 V7 q! V9 w' Q6 g j0 i
case Column.ID of
3 a/ P1 b4 p7 o; ~# ~ 3: begin
, u! |. z$ `! n5 G; e if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
/ i4 } T7 G/ E6 f, Z" \: e Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; P7 }+ ^' `0 L6 ]# [5 S$ F0 R8 N0 P5 J7 ] else
6 u+ Z! f: l; Y# q' y$ |4 P& ^9 p Column.width :=w1[3]*8+5;
* Q, v4 { |4 s( S* q3 s end;/ D. k4 l5 k/ I" S$ `. t5 l3 R0 U
4: begin
- @) ~" I% v- Y |$ S ]; C4 E if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then: k0 F- c* o7 L0 R: H5 M
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5# g, B3 M1 e9 Z$ x
else
/ V! R! A2 L' e" C% C- ~ Column.width :=w1[4]*8+5;2 H% e2 q X3 y. ^
end;3 i; U5 g8 f3 s' b+ h
7: begin8 k2 ]' Q% a4 X; X+ `
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then" w7 Z+ C% B9 Q* w: Q% m; W% q0 T/ k
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
. _* u6 i3 ?+ s else
1 h5 t3 B( l* m4 D) E, g Column.width :=w1[7]*8+5;
* d: z, y2 u! b( t end;
. k; U) B5 F4 `) d else
1 W) S" \% W* u( c+ D& \+ o6 O begin: L8 G/ }$ D, L6 X' }) q
first;
* |# _; @: y0 j0 j" x6 Q while not eof do2 p' K+ o6 U, b( L
begin2 C4 e9 E- l; d, c3 H
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);" L2 m$ {. |# k2 d! C% j1 `
Max:=math.Max(colwidth,Max);
7 p* o# t0 X; r% Y; c Next;
, [: p9 x0 L" U: K( |; L% | end;( s2 S+ w" d" D. [4 p& U
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then2 w/ T, |: ~) Y; k4 g
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+59 j4 P) g' G- d; j/ p# s8 k& ^
else6 }) Y. H! z) r# `& i+ `! p
Column.width := Max+5;0 o8 g* u% d" W2 n7 P
end;
1 b6 K9 D0 g" l3 a* L- e end;
7 N* Y2 I& I: G% [; D4 R/ }# A end;
, z. n7 r0 ^, W& V3 c9 p! A9 f 2: begin
9 F e6 Y7 I0 V% ~ case Column.ID of% o/ e5 j7 J& I# \. |, D2 ~. ]1 c `$ [
4: begin
l2 X1 L3 d3 g4 u* t8 T if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then# V4 n: {6 N0 _; q8 l8 S
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5& |# Q0 ]0 K& ]4 f3 U9 d& G
else
! q; S/ E/ a! H" _- }& q Column.width :=w2[4]*8+5;
4 B! y. v7 S: M5 v6 E# _ end;
1 g2 e& n* w, Z 5: begin
$ x# C, ]! L S if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
- A0 R, \4 C8 O0 I! R Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 I/ F" J& Z! ]9 V
else
3 Q+ j% @3 O8 t0 F: B5 G: Y9 b Column.width :=w2[5]*8+5;
+ {# T q& i) L7 S. l$ h end;% F& q; k& s: _. i2 l
6: begin
3 g4 D" v8 z! o! U, e if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
/ K' ^; s0 G5 H$ J: B5 x: H Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
* x G$ |2 c+ ~$ `4 ^ else
1 r- [: H0 e( O2 E. x! R Column.width :=w2[6]*8+5;& c# [! ] c( f
end;
$ w3 c& ]) h0 ` else
7 ?, p, Z! v8 O9 [2 Y begin
1 r4 j* Z3 I5 k M first;# p! u/ ^5 [7 e4 W- U
while not eof do/ K& R/ _& ?7 P7 ]5 l" Y- c6 J
begin
1 R2 f6 r! Z( e; W, l* ] colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
( a& j- [% _ _ Max:=math.Max(colwidth,Max);: ]; ~8 _" J7 k$ t8 }
Next;# b( l0 O' y w0 |& U. @
end;
1 [) [# M3 h( I/ {3 e5 l# H if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
& ~9 `# `0 b, B& a9 O- D Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+57 s& z2 D0 `8 U9 p* a. X& I
else
& K. W! O$ t* a) Q1 x0 ~7 ? Column.width := Max+5;9 Q" b# V& s+ X3 B8 Y& }! j; F8 f' d" `
end;
$ I% E6 l3 u) d end;) F) k' k" y, t! O! `: }
end;
. N" V: `. f+ l2 [1 F3 k end; v5 a) \. w5 L" e N
end;
( g9 ^. a @3 q$ U# |, u: w Cend;</P>
$ V: V* V5 z) m$ i/ U< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);$ T0 z+ u2 b6 ^. s
begin
, O- |- X: u0 ^) N; p) M0 K Orderby(suiDBGrid2,Column,2);+ p0 h2 i( x3 f6 T) f
end;</P>0 S9 P6 ^! N L, x. u o2 N$ n5 z
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;, f0 i3 R+ l7 d4 [4 Z# J4 X
const Rect: TRect; DataCol: Integer; Column: TColumn;6 s& k: ^! E9 |1 `! P- l
State: TGridDrawState);* d; w8 P# _4 R3 Z( N
var, Z$ J6 p+ H' p" a! s6 n7 h
DrawString : String;, J2 u3 q) L1 L
sys:TSysOper;; C# d, v# V0 [
begin
( B/ X h/ Q6 Q if (gdSelected in State)then) G: S% p3 x0 b5 J8 ~: D8 i( n
begin
4 f3 f( n. I5 v, b" n' Q suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色8 l/ ~5 z9 W4 d' r% x
end$ a& L) Y- u" Q# x' |& `+ w6 s
else
1 K3 ^+ J- a# t d: m# d, ~ suiDBGrid1.Canvas.Brush.Color:=clWindow;
1 u6 y0 ^% G1 Z sys:=TSysOper.Create;6 z, o y1 M1 J% s) q* }$ {
try+ \/ B y" y/ f; d
if Column.Field.IsNull=false then
' D' E, h; u7 H begin5 W8 Y. J0 J2 N, _
case DataCol of ^$ L& i8 w6 v3 c. @5 |8 o' D) }
3: begin( B9 c# }7 s: y' k
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。0 h; Y' ? S, k9 S+ D& G. Z
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);0 h4 u/ b) Q4 h( p! F7 t
w1[3]:=math.max(Length(DrawString),w1[3]);
% c3 L$ B: ~6 h" O p; I end;
1 ], K2 S; d9 F# r 4: begin X& a& `! K; O: C. w/ w
DrawString:=sys.getLoginMode(Column.Field.CurValue);: U; N$ c4 p0 e/ X1 ~1 b) x
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
! ]2 B7 E" Z3 a& v7 E1 D w1[4]:=math.max(Length(DrawString),w1[4]);
+ z% P* z7 @+ G- | end;
* u2 @1 i+ v. P2 D, {+ S 7:begin
! V- K0 @: }0 D: {: `1 b DrawString:=TimeFormat(Column.Field.CurValue);
1 i0 c% Y+ h8 B( X. ^3 B suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);# k8 z# J6 D9 p: C; Z# `$ p- l
w1[7]:=math.max(Length(DrawString),w1[7]);' i; L6 b: w; R5 K( g) @+ E+ x
end;( V0 w9 z- k4 t9 I' N: @
else8 z1 o0 G" N! q/ a( S
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
% k7 v% T& X4 g0 M end;7 d; W' f: z- K1 b0 l
end) h+ f1 T$ y' F7 Q& t
else
$ Y4 n6 h' _$ J% ~0 l suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);8 [2 X) O( x; O; x' y
finally
* b: c3 l: o# o( n sys.Free;2 S, C# ` s: k7 f2 ~& B1 N0 B
end;
% z& n- _; F2 j) j$ Iend;</P>- r2 x) c$ S- [* Q) {
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|