- 在线时间
- 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
; f0 t0 v' h: l6 b W1: array[1..8] of Integer;% z% M9 k! o4 R" P% i6 u
W2: array[1..8] of Integer;</P>
) Q5 ?6 U5 t: G' a< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
/ C) B! w: U: b5 k! X' ?7 d/ e$ C# Avar/ w/ {& |% l# m4 j8 z/ @
colwidth,Max:Integer;
. ?: a x" v! K6 `) Ibegin
/ ]4 a# ] u; F. L$ v* h' E# E colwidth:=5;
K+ C |6 l: T* { Max:=5;2 D8 E. V% f$ Z' O" Q
if not(Column.Field is TBlobField ) then9 S+ p* ?, ?+ u0 O( c9 }
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName: B: V; D( u$ Z t: G* y* b9 y
else6 n$ c/ f" \' }+ w4 Z
begin
* W" ~" L: M" Z9 _% I- Q5 f Column.width := max+50;
6 Y3 T3 _8 Y3 e5 F; A exit;- V9 t& \; {8 @. @
end;! `6 ~' y) r9 u
with Tadotable(Column.Field.DataSet) do
* N$ H# x# m2 h begin
5 ]) `# L' _& ?: Q7 t2 o case number of+ r9 ` m# d; V
1: begin5 h% L: I3 f# D: q! A/ t
case Column.ID of
% f% c, i! G: x5 a A. Z0 ~. u6 Z 3: begin
; c0 P/ N$ c6 H' N5 R$ g2 d2 f if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
% P5 P" S/ `3 ?( h( F Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 u/ H9 W% M0 u j" y
else
( y, t8 {' v: ^& i8 s* } Column.width :=w1[3]*8+5;0 b5 g8 G6 d" t% E& `& w
end;8 f6 N! d7 Z' g* S
4: begin! \% z; _6 _/ u
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
' Q( W2 C1 Z4 N6 j1 N( Z) C; A Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5, I; _$ {5 p' y* {0 J8 Q
else5 v# `* B- m- v' j& t% B5 \4 ?
Column.width :=w1[4]*8+5;
/ H& y3 f* t; @* @2 [! L end;+ Q- [ D# V0 r+ i! h" B
7: begin5 e3 d* m0 \% w
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then0 S/ P& d7 J8 t/ o+ `! J
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
% S5 m! k- w5 ~, e" M, Q, A& ] else
. H( \2 a( D1 t3 x Column.width :=w1[7]*8+5;/ s- x& t" K; a! e
end;
; P7 u3 m! R9 {- M4 Z3 q5 k% l else
1 [- C2 D8 p \. `. d begin1 _+ I; s4 [) m5 A( a
first;
; r8 L& J, M7 S while not eof do
8 d6 l5 v3 x- t( M' `! P2 }/ j4 R begin
$ j; i8 L+ F1 v5 m1 F; P' d2 G colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
, Z' y- s% h7 d% e$ b. y Max:=math.Max(colwidth,Max);
, o3 {# C5 q; ]! P: ~, r$ O Next;% A, u! }2 g! G' ^' c1 L! ?* c
end;
, g* c8 X7 G. N3 v d if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then, x* j6 t) Q. K9 E0 A! z6 E
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+55 U6 ~2 u) L& p" n9 I' J
else" l9 O1 R. N' W5 @1 ]7 V
Column.width := Max+5;
9 w7 U1 b3 }' d5 p# x' Z end;
, Z6 l) j) F7 {" @+ E1 C2 P end;
6 p3 t8 E- \; q% A+ A% @ end;
, w5 y m3 _/ j B 2: begin
) o! d7 U3 S* O. ~3 s, a case Column.ID of
: q% M" u+ |3 g2 I1 b' o5 ` 4: begin
7 Q6 Y: N7 v9 H A if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then9 H. I& E6 g7 N9 u+ x; ?
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 [2 a4 p9 m$ k7 u4 h' Z$ L
else
9 W% h( n; Z% ?: ~5 B6 J Column.width :=w2[4]*8+5;
1 {8 t( a; Q2 u2 `2 j9 t3 y end;0 T, `$ A2 F* ^1 E' P
5: begin
' J! {( c* l) t# u5 o if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
; C% ]6 l7 V/ q( {( N Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5" @4 G( j* P% C3 m
else9 N' r, J/ z2 ] x" |0 X
Column.width :=w2[5]*8+5;
9 s/ B% ]: t* m; G end;! I/ c( W- _" V0 z. N, v
6: begin2 Z& \( ~* b7 h- M$ P
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
' O+ l' W, u: Q# z7 I- w | Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; ~& x$ |% A' V9 U+ S) @$ r& d$ B else2 S0 [. r8 [2 v2 q% a* K4 ?
Column.width :=w2[6]*8+5;
" f1 P# B6 W: n$ T+ \) J- d* c) T end;- R+ C+ t: e9 F
else
9 N+ w' {. E" A$ I begin
) X% O+ w; h8 z" m/ Z first;1 _# ]% _! Z# Q4 C7 u& w4 K
while not eof do9 t: a' E& z1 X2 I' X x# c
begin
i$ j" f5 y* [" u5 T0 z/ n) ? colwidth := grid.Canvas.TextWidth(Column.Field.AsString);6 ~7 s, G# [# ?7 u
Max:=math.Max(colwidth,Max);- v2 P i- w# Z9 u5 p# f4 ~# x: ~% z# N
Next;3 g! u7 [# i8 x
end;- [0 K$ S5 y' S V0 ^* N
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then8 n! z& z- N! y% W
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5# K0 f& v% a3 w3 ^* z- E: K
else
, K q& R% a f Column.width := Max+5;. T9 H) J0 }! m1 }+ x
end;
, r8 O8 {& S0 L* i end;
, J% G, m/ X) \- p8 e; C end;
4 r: J, I' Z4 D5 G6 z$ u! I2 b4 i end;) j* u8 o" o" d+ ?& Q) l
end;+ Y' p4 z' K z" t
end;</P>
1 X; e/ n! B# Y+ {+ n+ ]& k< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);6 F5 `7 b, {5 _7 g1 ^. }7 c
begin
9 j3 P. u$ A$ P- p Orderby(suiDBGrid2,Column,2);
0 Y8 b1 W( U/ f' N- V/ ~6 O. send;</P>+ J3 k- @0 A6 j$ _6 {
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
+ X& r$ ?; Z0 C! ]; } const Rect: TRect; DataCol: Integer; Column: TColumn;
8 C7 y; J9 C! F+ F1 O State: TGridDrawState);; S D* w {# H/ k9 F
var5 s. _ S u0 p' Q' s J& L
DrawString : String;, \( a" V- L1 t* z$ w
sys:TSysOper;
) s9 n( h! u# k( d% D( u3 N' wbegin/ L6 q! y8 x4 S9 c, q
if (gdSelected in State)then6 a. {( H' Y+ G Y" R) \
begin& ]& [! {* n2 M
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色) m+ b+ V; o% N- f _
end m/ O) Q7 v' v' g! F& N
else
( w" A+ c" ?+ `$ i) v/ K suiDBGrid1.Canvas.Brush.Color:=clWindow;! e; i# A- N3 f$ L4 l4 U
sys:=TSysOper.Create;
0 a2 Y4 E% _5 k# O% t: d8 V* w try+ O ^7 z a6 T" g
if Column.Field.IsNull=false then
7 T+ Q( u9 P1 j/ h/ D- r, R begin2 _# o1 n$ g' y3 W
case DataCol of) D0 Y2 f( H0 L4 b
3: begin" J, O1 Z) n8 ~4 v* L* H! p
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
/ I( t1 r0 w* `5 R' w( ^& O3 D$ `8 i suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
' k: w2 q1 T1 Z2 j) E w1[3]:=math.max(Length(DrawString),w1[3]);
4 k( g H% v/ Z3 i end;
8 q" r+ P2 L! X3 @! A- _ 4: begin
4 M+ X1 J" M2 ^+ _ F: Z DrawString:=sys.getLoginMode(Column.Field.CurValue);
7 J6 w% x: @# T4 R& z7 |9 j* J suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);/ c- x0 i% b. N* H9 B' x2 d
w1[4]:=math.max(Length(DrawString),w1[4]);2 ~1 b; V6 s- `% x+ g% B) {
end;' N% `3 w: ^! ?1 ~1 g7 u, k$ X0 t8 v
7:begin1 y# x$ V/ H* A c$ o* \# J& u
DrawString:=TimeFormat(Column.Field.CurValue);3 O4 m2 C E7 y' W+ a
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);% u* y; e7 f4 J$ E; u7 V& X
w1[7]:=math.max(Length(DrawString),w1[7]);
" T7 x7 e- L) l6 P5 c, i+ V end;; ?. d3 A) v' l+ B( o4 m9 X
else* M5 i" M3 g7 e* n( C
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
6 Q% h* I4 P* A* U- N& O end;
0 d! A' h1 r ^/ P$ b. C end
, X: X3 k. |) c. g9 ?+ J else
' t0 L0 v" u1 W$ ?0 { suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
& } x& z* d; E# D* h9 `5 i% j A* R finally3 ~# N% M& d5 `0 R# f: P' A
sys.Free;
( x5 z o5 f) {5 G end;+ V4 a) P& e" z4 d( E5 U
end;</P>+ o7 K r- p, T5 X
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|