- 在线时间
- 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" C7 B* n+ |- ^) ~; _: H. a
W1: array[1..8] of Integer;
* p2 H" `8 C. v( k W2: array[1..8] of Integer;</P>
$ {% M% d7 P2 `< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);
4 W5 N0 s+ a) [: J: P3 d- Rvar1 Z0 L: h; n* m9 X3 s) x
colwidth,Max:Integer;. y" T1 q% |7 X; ^8 s- V/ c V. b& f
begin
- P* C6 q! d2 S colwidth:=5; ~& E% \0 g9 s% A7 K5 N1 w
Max:=5;
# m$ Y% j! K2 h1 {, Z3 e8 j if not(Column.Field is TBlobField ) then6 n2 A0 a- m4 L, D
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
- c6 C: _0 o4 V- i+ g else* `4 `7 v4 X5 g4 h& y) e
begin
: _8 w Z0 V/ @' R/ E8 w Column.width := max+50;' d+ C$ S! a3 x' H) Y1 ^" ]
exit;/ I2 y8 e/ @: o" J& v% M9 S; M+ |) Y
end;
" j y2 y: q( R$ P j8 y# I9 | with Tadotable(Column.Field.DataSet) do! `$ E5 f, b* B8 ?" ^
begin9 | }; E- t a. o& L
case number of: F1 t ~* u; a+ c5 [9 ^
1: begin
& J- l0 W0 X# G7 {) p; N case Column.ID of
7 ]' p5 w- G1 r- ^* `+ I0 V 3: begin
2 M& Y7 x' L2 ~- ], E6 d+ ? if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
8 C5 }3 }* h2 `. r; R Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
: M7 S7 Z+ Q8 w5 T else
. T# [& O' ?4 L. _8 J( P2 @ Column.width :=w1[3]*8+5;
, C4 P9 u* @2 c! G/ H end;/ s! |7 ?: F8 S- [$ ?- P
4: begin
3 ]- Z( P @. I( [( e, m if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then" j' O6 V4 g# y6 W4 |0 |1 |
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5+ b. R2 T, ~7 s1 R
else# {5 a: ]4 n& L3 \# ^
Column.width :=w1[4]*8+5;& z% ]- g& D0 W, P% S
end;: H* @; p! V8 _5 K) a, X
7: begin& r1 U2 Y: ~1 G5 f) @+ r
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then( `+ i5 N; ^$ Z& }) J# e
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+58 d+ @/ u: o" s+ X/ [: q
else
, ~; E$ o- j# I9 e" |7 G! R6 k) l Column.width :=w1[7]*8+5;8 F. d3 |# w7 Z! x9 H2 o
end;
% u; }" G. y4 K else
. N3 w5 ~, a5 x* y, ~ begin5 @# I; M8 k* H" H' B4 {
first;) V% M$ g. `2 v6 ~7 D
while not eof do
( p* h8 l* ~7 M+ I) `$ p9 u& Y0 j begin
1 Z$ M7 [$ v8 z3 o colwidth := grid.Canvas.TextWidth(Column.Field.AsString);9 {' N9 q9 h" [# }8 p
Max:=math.Max(colwidth,Max);3 f x' k3 F5 u9 G1 b
Next;
. y: i w$ m9 h( C: A6 o' X end;, w& |& i1 J( @( E/ Z3 f. |. ~
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
5 o9 \: U- F: R Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5# |1 X' i- s: I o6 l7 h3 }/ Z
else
; J9 K. ]/ l x Z Column.width := Max+5;
0 Z7 z, D; d1 o V4 B8 ~6 O end;) l; E2 N% j9 D% ?
end;
; x2 b4 [% g* v o1 q# J end;. c" ]) f+ U5 ^0 h3 L8 c
2: begin
M$ G5 U1 `0 y x6 I/ h case Column.ID of
( R1 }1 G: i3 b* p0 [! y 4: begin
( ?4 d# i. S* ~/ _, x3 F if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
& ^' q2 Z9 `$ U0 X7 {9 i Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; B$ x8 S' |' j8 ?3 N# U else8 [/ n1 I) w0 M5 q5 K& q+ `6 N
Column.width :=w2[4]*8+5;5 O- u+ I# y/ _% H0 u
end;" F( U6 _% i. z* j# ^
5: begin4 ^, t# {4 j" s9 N& o t
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
e3 Q6 I9 C" j: } Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
) f+ @8 L5 Y% R5 G ^$ b* ` else( i' r6 d* y- k7 s& H% i
Column.width :=w2[5]*8+5;
- l, I$ l& ` @" d end;/ |' H! S: E @# j, q
6: begin
; t/ w, R7 U$ u6 O1 y/ Q if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
. {; C: v" N7 Z9 {/ W* b% o% w Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
' r6 B" X. e! ?: ]7 j* u else# k( z6 ]! X E: r' \( r& i7 [% E5 a
Column.width :=w2[6]*8+5;" q4 a/ W, i5 i/ U
end; u) N' x4 I5 C& e% b
else6 ]# y# s7 h% v* @7 B ]
begin3 j$ {( K- n Y7 b" K. \ }2 G9 y
first;
2 \3 R% i8 G2 p1 K6 c6 e+ s while not eof do
/ ^; I& u$ o" s$ E6 y, b begin
- e( d4 {! h! J+ D colwidth := grid.Canvas.TextWidth(Column.Field.AsString);" _! D1 O) |6 _5 j
Max:=math.Max(colwidth,Max);
6 [9 M s& @% I' K Next;
8 [/ y. s( [. P6 ^# N+ n" b end;6 S9 V: y0 q$ a6 F0 v
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then) r7 r( Y0 v4 `. i
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5! o2 r0 q% V! M! [
else1 u C2 G6 W4 l! \( T7 c- ~
Column.width := Max+5;/ Z2 J: e1 Y& a' R
end;
1 l9 G) Z% A, D7 X' H3 J end;9 N, p K- I) d( A' o U
end;
% e# Q4 `. _% X9 O, J, `# s: t7 f end;
- u3 |1 b" a | end;
% E% D; a5 J/ f3 P) ?$ Q- rend;</P>
. f% h8 ^8 z) q* u- z4 Z( [6 V< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
% _" w2 u; A9 O4 S' p \+ Tbegin+ ?4 h5 u' k, l, r6 a& g2 |* f
Orderby(suiDBGrid2,Column,2);
3 c7 Z( K3 h( l4 {# Eend;</P>9 F7 ?$ m6 T' z) g/ d, t
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
. Q, | M* a9 q2 N4 x2 [ const Rect: TRect; DataCol: Integer; Column: TColumn;
& z) O7 ^) e# F State: TGridDrawState);
. j1 ]9 E3 M2 ]var# c' C( o, n( X( A; c4 B
DrawString : String;" {4 }% X2 l q' \
sys:TSysOper;9 t2 t( m- W& M" }) \8 ?
begin! B6 g2 P0 W; V! @- }
if (gdSelected in State)then% x& x; O: F( }8 w
begin- k: ~. |3 _4 @
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
7 j5 B. V5 L& j; z- O& D8 n end$ G* D9 k% e: ?8 p+ V' r0 O4 b0 f
else
8 l1 N; X# i, l: a+ V. ]6 K suiDBGrid1.Canvas.Brush.Color:=clWindow;
! _5 D5 Y& D5 D4 B' f" ? sys:=TSysOper.Create;" x ]7 B8 ~) S; u- D4 `
try2 D' \) V k K
if Column.Field.IsNull=false then
9 o" E5 y1 J7 q; m# D/ M; O begin
9 l" ^$ }7 Y9 ?; b; T% s. } case DataCol of( I' X2 E& C: i) s9 p1 L7 ]0 R
3: begin I" o8 Y, i' }; E3 H+ C
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。# I, i7 I' F0 p, p/ P% \
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);$ ~4 s* X% V$ ^' l+ ~/ l) ~$ y0 h
w1[3]:=math.max(Length(DrawString),w1[3]);
. s9 f7 q% w- h" s% p( @6 l4 y! } end;7 f$ R4 f/ i. z9 r% o3 `( H
4: begin! w* e: x/ m% A9 Y" T: O
DrawString:=sys.getLoginMode(Column.Field.CurValue);
0 N4 p5 z$ O! o) k; V) O$ T- W* C: A suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
+ S' U0 _" {3 W! `1 z5 k" O2 m w1[4]:=math.max(Length(DrawString),w1[4]);
% A7 p7 J2 n- z+ U( f, } end;) H7 l) C3 {( R" d3 X0 c3 Q
7:begin# z E# y; C0 }9 ^
DrawString:=TimeFormat(Column.Field.CurValue);- T @$ C. c8 Q1 O+ R$ l
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
: ]- Q B, l4 a( a w1[7]:=math.max(Length(DrawString),w1[7]);, ^+ n3 b" B8 U3 Y
end;4 o8 G0 X1 `7 V3 _: E S& ], v; B
else
6 p* S4 F3 A0 o9 `0 C suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
6 N1 @" W2 S4 m/ k* [, x* E end;) ~9 J* s, g/ v+ N* T2 z0 V
end
* w* k, b3 N! [ M8 M else
+ U/ q& f6 G% s suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);3 A8 M& v5 Y! a4 g. |
finally( \& n* G8 A2 K1 v7 |
sys.Free;) u/ b' g- |6 y
end;2 O% B7 R( t$ A5 n# [4 I8 [5 Z
end;</P>7 T# l9 Z& [) j
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|