- 在线时间
- 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
7 ]# E6 K; K$ j) A W1: array[1..8] of Integer;+ i$ S$ Y Q5 W* I) k+ T
W2: array[1..8] of Integer;</P>, Y/ ~2 t2 n7 e/ w
< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);! s* _ J: l# k1 ?9 m9 @% ?
var' E+ N# ^3 e% ~
colwidth,Max:Integer;
- J `3 } x6 H7 u- o6 Bbegin: P; d/ ?' u5 }) [5 t9 W
colwidth:=5;, H x3 |* k. n9 `2 @& H3 y9 T
Max:=5;; q7 p7 M; W& g+ R; g
if not(Column.Field is TBlobField ) then
6 a$ z: C4 t' ^% v, E- f Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName1 T* c8 d9 R* ]% c0 t5 N a
else
+ N& [! \& q% U begin( c0 _$ Q# L* B- M
Column.width := max+50;! R# z% y o: {
exit;
) }, b; G' M2 C8 E9 ^* q. _ end;) Z, U5 T2 Z4 u" t+ y5 e k
with Tadotable(Column.Field.DataSet) do
1 e0 i: g0 b: w* P+ S8 W begin
, f7 L% g7 ~/ C% j case number of8 u- N2 s7 f; b! i8 x2 e" ?8 Z: F
1: begin
# _( |0 ]; @4 e$ {0 A case Column.ID of
1 H6 S/ R. e) E' y4 M( _ 3: begin
! L; D$ k+ s6 b$ l5 V6 k# T if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then5 s+ u7 Q3 U* j
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
4 }0 f. q! z# `) [3 I+ ]+ x else
5 z. Z6 h" E' M' Y' r& } Column.width :=w1[3]*8+5;9 U0 |/ g+ i! Y6 L
end;& y4 j& M; x5 w
4: begin+ P* Z! ]. z/ e4 O- V( t/ ?, K
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
$ V1 Q4 Z9 ~7 v% s" C R Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
( q2 n) ^, {; e* N2 P2 b0 | else' e* r3 H' [7 m& L0 o1 h# D
Column.width :=w1[4]*8+5;
% t4 K. ]& [8 J end;
J2 }7 j6 o! `0 P* U 7: begin4 z- r+ L" B0 J1 a" ]
if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then$ ^* r* K$ e* u d( |
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 ~! C; w/ ~9 N
else4 X7 p% D& w# T3 z$ r
Column.width :=w1[7]*8+5;
- t; y7 k) u- g( F- X8 E9 _9 B end;8 U/ S/ A/ j5 }2 _
else
8 {% A' ]- y# Y/ K3 v) M# z1 m- W begin1 ^* |6 \9 X4 [
first;
$ ~5 G3 L( b4 X3 K$ N while not eof do8 X1 t( |, |( o! @0 R6 S( M
begin
- D. I+ b# n0 s; s0 L# d9 ^ colwidth := grid.Canvas.TextWidth(Column.Field.AsString);5 _( Y, L& N& n9 f5 u
Max:=math.Max(colwidth,Max);6 n S- S% s- q7 [# o
Next;- `1 u" a$ _6 q4 U/ ~$ y4 c
end;
) x7 j$ P( A* t* c T% d if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
5 O0 u: o* Y2 q. j* _ Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5: T$ j1 \0 q1 q$ k* N, p
else' @, h& A3 L( @/ X) x
Column.width := Max+5;. k3 l- A' b( H& d+ c% r
end;5 d& U2 W' \8 X- Z5 `# @% |; L
end;" T0 @% O/ t: H# a% B' s
end;, ]# s; }. n8 p9 Y2 q' x( R# p
2: begin
. e$ B9 R" M# w case Column.ID of
9 z9 Z0 L4 L% V0 J 4: begin
, b/ h" W" T1 Y) W if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then# r1 b: p+ d! Q& D# j$ ]5 ]
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
/ D) ?2 E$ y8 V [, n; F else/ e- G( _! S" N/ j# q$ V% I
Column.width :=w2[4]*8+5;! M7 b6 b- |" R! M O+ V
end;
4 j+ q: N0 K) \# [0 h8 s 5: begin
+ u3 K _& H# U4 x if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then. R9 J+ Y- Q1 z6 c- y, ~: v
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
: S; n8 E! Q* o) ~. I! H else$ V0 H! s: o* z' s9 [
Column.width :=w2[5]*8+5;6 {0 Z9 |- x% A* z
end;
3 B4 _$ P% C, Q) k" u9 }0 `5 h 6: begin# _- F' }# e3 f: S; T
if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then/ c( Z% s7 t0 o* Q' o8 }* A8 ~
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
. [! ~/ V. X8 o* H else" `4 N' x5 y# K7 W# k1 E7 T$ T
Column.width :=w2[6]*8+5;
3 y; o% I/ }- P6 H, ` end;4 N- C% i' A- s+ k. s
else
$ Q( ?- W7 y4 F begin
- U3 Z% I+ H' y9 D first;
8 M# e4 N$ Y e: e& f( u while not eof do; Q8 O2 H5 n* j
begin, d+ T. m5 D5 e) f, { r# o
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);8 ~; \& {, B: B0 S
Max:=math.Max(colwidth,Max);
! O2 o7 {/ a1 f5 o( h$ _$ V2 f Next;* L: A4 j& d: q/ U
end;3 V W% ]" p7 C& U; I# h
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then! e: J, i: S4 \/ ?
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
% T2 ~' p) d+ ^0 [+ _ else5 L, H/ s$ }( n6 \" X* G$ _# A! m
Column.width := Max+5;
. X D9 x% H: h2 p end;0 p* M3 X- h4 u) u! l' I
end;
9 u0 H8 o- C$ v& [ end;# S( `2 x( C% R4 r+ i
end;" Y L$ @7 A" I: |9 I
end;8 t3 A# B2 K( U4 Y8 c) ]
end;</P>; v& l& k/ L' E: K% z" b
< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);, p7 C3 n5 I, D( A. G2 \
begin6 Y i; _; w. y( N
Orderby(suiDBGrid2,Column,2);
! _& N f% A9 Y# i8 T) aend;</P>0 |" O1 k' e+ a
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;2 X& c. f" y. R# R" B. c8 e) _
const Rect: TRect; DataCol: Integer; Column: TColumn;; |: [6 Q8 j! R: @. w
State: TGridDrawState);, m' m4 }5 v: v4 F. _
var
- _. G4 G. D0 Z# n+ ~% n8 a DrawString : String;
P/ d+ A, v5 C sys:TSysOper;$ V& ] D( V9 W: z, K/ p: _
begin
1 ~7 j1 Q! _! a$ h% b' V4 I if (gdSelected in State)then1 H' U* I( m' G( [/ ]" e _) ^
begin
+ a( V( h0 q3 C6 D; c suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
' G6 h3 R0 [8 h4 r2 F& n( y end1 g) U) j! o. z1 C+ ?7 T6 h+ Q
else8 v& V9 S2 R' k D
suiDBGrid1.Canvas.Brush.Color:=clWindow;
& Z$ t" i" S1 d5 g0 a) a9 k9 _ sys:=TSysOper.Create;4 ? f! d4 U! t. e% u. c
try3 {4 T* {4 W& U8 s
if Column.Field.IsNull=false then
- o0 Y i* z3 p6 V/ w( Y* n begin
/ `; F! F. D# ^. u0 Y4 v- \* t* a case DataCol of
, y- M3 K' v$ i5 f" B1 ]! @ 3: begin5 u0 k1 `$ v) X% S4 T+ ~2 o0 {+ r
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
; h/ _3 ~7 P3 F' [4 i% M suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
! l0 H3 y! \6 \ w1[3]:=math.max(Length(DrawString),w1[3]);
, z( O& B0 ?- V; M9 n% |$ c5 c9 A end;9 A9 ~: X! V o+ m6 W( h
4: begin% X- ?' {/ k5 R! y( b
DrawString:=sys.getLoginMode(Column.Field.CurValue);
& D' d, e& v6 S8 L. l suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);( W4 |9 V7 G# j& p1 _+ U
w1[4]:=math.max(Length(DrawString),w1[4]);
1 v- r- ? t8 h F& Q end;
2 ? c$ ^8 E0 N" y' A9 a. U3 O 7:begin
% q5 y3 d1 S+ @) o0 A DrawString:=TimeFormat(Column.Field.CurValue);
2 N+ m8 N- W) S& \+ o6 w suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
$ f$ Q0 G2 U: V$ Y0 T w1[7]:=math.max(Length(DrawString),w1[7]);
! @- f+ E4 f: E7 x) a5 ~4 k end;
- E7 v; s$ E" b- m9 `) b else
7 T1 X- \* B" j5 h0 P+ t4 R3 R suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
( t3 D: U2 t, \, M8 a end;: A% H3 ^ e0 h! G
end3 z9 P& n' }; f. d
else# U. e) E+ \) ~8 T7 X
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
) _! g6 Y$ r; y }2 r$ w( o finally
5 j0 ^7 v3 v) G0 }: y l sys.Free;
! {! J; C* L8 }. K1 K7 B end;
0 a; v# ^" s" ~& m* X. xend;</P>4 G; E" `+ E% i( u7 ~6 Q. u7 V
< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|