- 在线时间
- 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
1 o* v( D2 t' {- y W1: array[1..8] of Integer;. v1 i# f) \% R, ^2 y
W2: array[1..8] of Integer;</P>5 x9 \; l' s% Y+ S
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);+ t* J/ ?0 b' ~* \5 C* D4 ^+ \/ {
var' C3 ]# B8 e6 V. d6 l( q
colwidth,Max:Integer;
" [" b- F' I) p$ T/ ebegin
- L! S0 l* E9 s8 t5 \ colwidth:=5;9 A9 M; h' b$ _. E% `: w
Max:=5;! l# s$ i+ w' H
if not(Column.Field is TBlobField ) then
, _) t, f4 {2 u* s; q' i5 h% R Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName
1 d+ V3 P4 ]# X7 V3 P( ~( P( T) U else5 K' B8 X7 d C0 I: q( [
begin5 T* W6 N: M3 ~8 v( M) j' u1 T I
Column.width := max+50;
& R! X6 Z( N: B; X2 j exit;
$ N- [% f m4 }+ D: p6 s- t end;
# Q/ f2 U% ^$ [: E with Tadotable(Column.Field.DataSet) do) S# p# ` k7 X* u5 j
begin
) z! a& c0 E* j) B5 P1 t case number of
6 t$ ^- w: u2 c& R 1: begin
3 M9 e8 [5 D4 i% ?* \- S- }$ I case Column.ID of
/ ]: l+ p$ u2 z9 q9 Q! G- k3 j6 R 3: begin
4 M7 V5 |8 e$ U7 }+ O if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
3 z4 y% E6 r$ \+ P4 j# O3 Y7 v" k- w Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5& `( c; `: x6 J$ w
else) I8 n* P8 V6 u3 m
Column.width :=w1[3]*8+5;6 W4 J# u, l' M& k2 i- _
end;
& I, ? l& k: \$ m! j0 t4 G1 r. ~- v 4: begin
; G- R# |# C0 P2 r3 U) {: i if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
& K: L; ~3 t! u7 a& T# i1 n, Z Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5% ^( e7 m& ~. j" S0 N
else
- K, u. P& d) X* K Column.width :=w1[4]*8+5;
1 Q; L# q3 P4 B% ^/ l$ L end;
' l H ^& v8 F, e 7: begin
: N( i d5 ^) G- j" | if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
3 \* [7 g4 R: W7 a5 s Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5$ ]* z, G9 P! ~5 _
else
' }6 c& u5 i& ` Column.width :=w1[7]*8+5;
) Y2 I6 @- }3 ?/ y- L end;8 I3 e" T! B) V& y( k$ L' u
else
% O# b8 N' o$ d8 P6 B, |/ ~, ^, h+ L begin6 m2 V+ ]- \7 w8 A* B; ^
first;: m+ h# f" e' T" |9 X& l
while not eof do
+ L* [5 L$ L& O( n; \ begin
7 a$ }* f9 V7 y1 ]0 v( _( n8 m! Q colwidth := grid.Canvas.TextWidth(Column.Field.AsString);- l5 M. G$ F/ f, E" j( o
Max:=math.Max(colwidth,Max);
2 h i, l9 b9 D) D$ ~4 h Next;. ^/ Z7 h! h, n* V* h4 \
end;. s$ G! X& C7 C0 L# g; D' I4 M
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
# a" ?; }$ ~9 J% L, M Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
! |: _2 C' s9 A, z8 @2 { else
0 N: q& J: |6 J; l+ T8 [: w1 d: i) c Column.width := Max+5;1 }) F* @, h6 X/ k: ?: _
end;8 c6 A0 y) n+ O6 `8 ?6 k
end;
% w2 \! L% ^% g z end;3 L+ n& J4 C- A5 E9 D6 k
2: begin# B! |) p; J5 G' I
case Column.ID of1 w3 D8 U# o; L, ~6 S
4: begin
' p: X& s- ]/ g" O2 s* N if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
. R/ R1 Y( t8 |' S: n; D7 z, ? Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+54 M' r5 p. Z" C/ C
else, g% V$ R7 `* ~1 z
Column.width :=w2[4]*8+5;
3 U( n' z! s! O; j {7 R( \$ t end;
3 _5 U8 f5 D0 ] 5: begin: c* h& t1 W% N# s$ ?' X
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then* k6 v" P4 a6 Z4 w" u; T9 T
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+58 q0 ]( i7 S( m$ p( t+ Z: ~
else: A8 K) I! q( q# g+ }
Column.width :=w2[5]*8+5;6 Y, Q* v$ B: x' v
end;7 N; B+ v2 {- `* e
6: begin# X6 Z' w8 O! C/ D' q7 i
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
: u3 }9 A3 u7 @7 i) R1 U1 _ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
; M8 _0 o$ Z0 K$ Y- `: K: G else
1 a" s z7 h) | Column.width :=w2[6]*8+5;
2 k, N4 k/ w7 T end;
. Q, g) g6 ^0 F" d else
0 M! D( |% t1 N begin0 S8 E5 t! n9 m/ w5 N; u9 _
first;. E) S( a7 v' j$ o! k
while not eof do6 F( @7 N- R) c0 W7 s7 K3 [( k
begin
8 `& D) P {7 V- ~& E) o% t7 O colwidth := grid.Canvas.TextWidth(Column.Field.AsString);2 f7 c; G9 C# c- f) ~* Y1 A
Max:=math.Max(colwidth,Max);" L! H3 N1 M/ S& d, a3 A, v9 s2 U& {
Next;0 x A$ H& L' t' c: ]
end;3 m: D( q+ g% L, j- V: {1 i
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then3 N) L: x2 l0 e- _% Y( Z
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
+ d* D* ?# A2 {+ @# N else
/ _3 V" A% N7 V3 q D Column.width := Max+5;
3 E0 z$ ]! ]8 K end;- p, s4 V m) {& A: p9 D: B
end;
4 a8 l! g6 S" a7 n* l end;
9 }/ y# X+ z) A- t" u0 R m2 {- y end;
! \( T. @* Q' B) \8 F end;( P. z. D& T- g$ G2 m
end;</P>
5 R7 e2 p$ ?9 z< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
u& C) R+ s5 e. }' m' c) Fbegin
$ j1 @0 W. C7 Z1 ?0 ]' h Orderby(suiDBGrid2,Column,2);$ W" u2 j5 c4 n) F8 g
end;</P>
6 Y" C! _' E" {0 D; U |: g< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;
/ D2 v1 k; K! L. P# B3 O( }( y8 d const Rect: TRect; DataCol: Integer; Column: TColumn;7 @, [: ^' }) {2 ~/ N( w6 p- e; s: ^
State: TGridDrawState);
' `/ g5 T& T1 m' Zvar
* ]& g& v; i4 l! q. J DrawString : String;% L/ H8 L r$ }* d- y; W- P* _0 `
sys:TSysOper;) ^6 h# ]# B8 |
begin
$ n& y1 F# ~6 K9 M% r0 D5 ]. {$ x if (gdSelected in State)then! O. x0 z( O: `4 I0 e
begin3 A& s# E/ [* T3 g! K. g5 i7 E
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色 w/ @' c: K5 q8 t
end
# U8 q( J8 i3 g- O else
6 z' e! I) g+ J3 G/ R9 J) p suiDBGrid1.Canvas.Brush.Color:=clWindow;5 s2 o' R9 ]+ w+ }) c# y
sys:=TSysOper.Create;9 A% R6 w, b) M5 z6 d" P, S, {
try! V6 W4 J% ^% w
if Column.Field.IsNull=false then$ O8 ^; I. q( f- D7 ~
begin! w" O% @4 ]% }& x6 S+ n
case DataCol of3 a. T; v4 i/ k8 C% W$ ?
3: begin
* \1 e f% ?/ u) ]$ G ]9 M( F! A DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。$ @$ ^1 Q3 G3 M2 L' g1 s/ l
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);* C) W& X7 ?1 _3 b
w1[3]:=math.max(Length(DrawString),w1[3]);
- ]7 e8 C9 }1 {, v J* }3 ? end;. d* |" g, C1 }
4: begin5 f/ ^5 u1 Z8 C3 Q
DrawString:=sys.getLoginMode(Column.Field.CurValue);
: R' t3 W/ ~) `6 e c- A S suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);( a" v6 F) a* F
w1[4]:=math.max(Length(DrawString),w1[4]);
! G. ^! K5 W# A( Y5 | end;
B) ^6 C$ o- X! l( A 7:begin
1 m+ i2 A. l5 k0 x7 L DrawString:=TimeFormat(Column.Field.CurValue);) U2 ?3 c8 R3 L( O' }# S
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
2 z1 z4 Q- P. r- `* A w1[7]:=math.max(Length(DrawString),w1[7]);3 Y" {9 P, e! G2 h$ s* d2 f
end;9 X) [$ l1 M; J( P& j* ~' o% f; ?
else( L# [5 F6 ]( e# I' e
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);: h& Z) A2 H+ r5 x
end;$ O2 R7 ^8 c. i4 }4 H7 f* s6 L
end/ n1 f; E9 H$ @0 P$ j
else* _6 F4 ]& F$ H: K+ |! N1 N
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
" [+ r$ m4 P# Y) q finally% H& j$ ~/ y: ^7 i( A# l: j$ P2 `, k
sys.Free;6 B/ u, P0 g% h9 E
end;
( A8 y4 [: B. g4 a1 p( ~ z1 Oend;</P>
+ z7 |3 {6 `- J* ?: D( Q< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|