- 在线时间
- 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
* T' H [3 ^6 E W1: array[1..8] of Integer;
8 H% [6 z+ {$ t) E# l W2: array[1..8] of Integer;</P>
+ G' w# `4 E' @& d0 b i< >procedure Treckoningform.Orderby(grid: TDBGrid;Column: TColumn;number:Integer);3 j+ C6 |# x& b
var
# O; m3 }! i R# |* C$ y/ V colwidth,Max:Integer;
( W9 u$ ?* O5 Q k* B% hbegin
6 c; S6 O" [! l I6 C% C colwidth:=5;
: P, M+ h1 W6 k0 B+ b6 D7 x Max:=5;+ t3 I( _+ M F( p
if not(Column.Field is TBlobField ) then8 k/ e& W x3 L* M' E- Y
Tadotable(Column.Field.DataSet).indexFieldNames := Column.Field.FieldName" S' {& a7 C5 c5 Q# Z
else0 [% q. E% c7 i( G3 @: U# X
begin: I# X7 G' ?6 }6 V7 j1 ~
Column.width := max+50;
8 W; K D% \/ L. ~( h: @) v exit;
h: [1 l& r0 t8 ` end;+ |/ Z+ p6 m B3 B" p, _: |7 c
with Tadotable(Column.Field.DataSet) do
' ^1 p, `& V8 o+ p8 A' w. c q/ a begin7 @6 A3 t0 m, x
case number of
" q. P2 M) P0 \3 B 1: begin
) R8 X, ]2 o( Z$ G" c9 T( j case Column.ID of
/ ^' c& c' i# K: a 3: begin0 }6 h: ~5 a+ f' c4 Q2 y2 ~
if(w1[3]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
% D u; Z, ^. y7 ]! I Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
' A% y( h+ F& ~/ s1 S4 X else
7 w" F E7 o+ H! L, O b Column.width :=w1[3]*8+5;
2 n8 }1 v1 |' W8 j, i end;) D8 Q: j G. J( I8 V$ ^0 t8 z8 L& g
4: begin h" R6 R0 Q1 k5 n6 y- {0 f
if(w1[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then% B# e1 _$ c, D6 ~$ m4 C! |
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+56 B/ h0 D7 f+ H* N% H
else3 q1 E$ I6 P7 Q" V( [
Column.width :=w1[4]*8+5;1 l# H( @8 n1 ^( J3 Q, E8 W: g
end;, h% j) h T1 n; e! }" R
7: begin
& G+ t: ]! E* z if(w1[7]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then4 K% ^$ s4 _: T
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5. g- I9 p( r4 B- O
else9 U0 {( k, T" H {9 z' i
Column.width :=w1[7]*8+5;
2 Q0 }( G* C# x end;% o% i# R' K2 k7 O/ D# e
else
$ p( X" M( T5 s begin
0 }2 m% {# ?- B1 X first;! q, Q& X( ]- a5 j4 ^# L
while not eof do$ k3 J: s: h# T# `
begin4 q+ N; `4 _: t" T0 `3 V( w
colwidth := grid.Canvas.TextWidth(Column.Field.AsString);" m; \" Y+ L/ n# h. l2 n
Max:=math.Max(colwidth,Max);
5 Q$ r# Q1 h+ d% H1 S Next;
3 F3 j3 f2 B4 c8 C3 x+ j/ | end;# n2 L) K- i4 d% d/ w- i' b1 L
if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then
: e& a x/ T) H& K* _4 d Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
/ |6 W# ~& G* Z+ T9 |7 r else
; Z1 f& i6 S- G4 t Column.width := Max+5;: m$ Y. P2 [) M& ?* ]
end;
# q( f$ {5 `. w$ d2 m/ z% A, t8 k end;
/ l* U& [7 i* S" ^* a _ end;* P/ i k$ [- m; m( ]; `
2: begin
8 C4 I9 G+ u6 K) Y+ t case Column.ID of
$ O0 X! R3 |# `9 V1 { s 4: begin. u! i/ K6 _8 B
if(w2[4]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then
3 [9 F" F \7 t8 o, I Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+53 K3 W5 [/ p6 ~7 u
else
$ z3 {4 ]9 d! K/ V0 s Column.width :=w2[4]*8+5;
! ?: L, \; f! {+ a1 c end;7 C" n P, q( T3 O1 g3 y1 _
5: begin8 ~- x- q2 m( R- x; a! C5 T% t
if(w2[5]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then" |# S- S7 |( p# S3 ^
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5* [4 Z$ X- T. g/ `9 I3 h$ Z# b' ~; z: j
else- g* J- R7 y3 h# p6 O1 Q
Column.width :=w2[5]*8+5;3 V$ l9 f& {$ W6 T' x4 I: p
end;4 _; n B" U% n G# F( z/ @
6: begin
n! z5 R* Q t if(w2[6]*8+5)< grid.Canvas.TextWidth(Column.Title.Caption) then/ Z8 A* v5 {' ?5 F1 N2 w4 H
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
" o3 w: y9 ?4 \! u2 x7 ? else
4 ~( \; U `. \% a* L( y3 [8 \ Column.width :=w2[6]*8+5;
& v: y8 {; P8 E _4 Q end;
0 k$ N0 Z- t5 y3 |: ]" t" G else
* C$ ?+ K: a2 d5 K6 \8 R begin- k! A1 ^6 ]( b7 P7 m. @, d
first;3 f1 ^0 `5 ^2 C6 J8 K
while not eof do& ~1 u8 r% d# t! O: b: I, s D6 x) q
begin
+ f$ ?* [% F: T; w colwidth := grid.Canvas.TextWidth(Column.Field.AsString);
3 b8 }; @" r3 u/ D" P+ f Max:=math.Max(colwidth,Max);* z8 `) E% @5 x8 R. w. T, f; [
Next;( K) k; A( ?! X0 g
end;
* Q- _2 E$ R) t3 C8 m) R" z if (Max < grid.Canvas.TextWidth(Column.Title.Caption)) or (colwidth = 0) then: j; g+ U X8 o4 g$ t1 @) L
Column.width := grid.Canvas.TextWidth(Column.Title.Caption)+5
' b; _6 L5 w4 m$ f. L+ O else
% z- ~* k6 r B' M2 Y Column.width := Max+5; ?' }. K- A$ p: x$ N
end;! P$ ]. @; n5 x. G# z3 M
end;
5 O) p; }3 F! x! @7 | end;
2 J6 v, q3 J, o( E A- V# V. ~ end;0 T+ p0 `$ L4 _. E3 G/ A- H
end;0 k- M+ H, ~# I) k6 ~" H
end;</P>
^" c8 ~$ O4 d0 x: V1 [0 I3 }2 U< >procedure Treckoningform.suiDBGrid2TitleClick(Column: TColumn);
, |% U L, |& t* nbegin/ i2 P3 o5 g; ]7 l8 b f3 d
Orderby(suiDBGrid2,Column,2);- S$ T# e4 H9 F& s
end;</P>6 I' ?$ |0 q% E
< >procedure Treckoningform.suiDBGrid1DrawColumnCell(Sender: TObject;/ ]1 {! a2 e& w( H
const Rect: TRect; DataCol: Integer; Column: TColumn;
/ L* ~6 T. P( B State: TGridDrawState);
: B x& J; b4 y# M6 Yvar& ]/ E' `7 Y: k! F! G- E
DrawString : String;+ n$ S; u7 j; d
sys:TSysOper;
P7 s$ _; \0 n( T& Hbegin4 a- x+ q! m6 D9 A8 e( w7 M
if (gdSelected in State)then+ l0 n9 _0 Z' D
begin$ L! E6 k# S2 ^4 i( c: n
suiDBGrid1.Canvas.Brush.Color:=clFuchsia;//使被选中的一行的颜色变成紫红色
E5 E3 @/ \) |6 d5 Q end
5 O. g8 g# K/ J8 n else' e/ v8 _9 D! Z! _7 D
suiDBGrid1.Canvas.Brush.Color:=clWindow;
$ a5 d" I5 i a, F* ~, L sys:=TSysOper.Create;
( T D& F9 v4 \ a try. J1 }, Z/ w% D4 I% W' N/ s% Y
if Column.Field.IsNull=false then
: a, ]& a& ^+ { begin* z3 d/ z$ [7 v' r& @
case DataCol of# B: e, q- T* |8 r$ m0 J! q8 M
3: begin% y% T. r+ p" b6 Y* h
DrawString:=sys.getSex(Column.Field.CurValue);//得到要显示的字符串。
7 @ J* U# O4 ? suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
# h, K$ L9 |( g5 ?; ? w1[3]:=math.max(Length(DrawString),w1[3]);+ Z, q: e8 p2 Z. ~
end;, S# p- x/ e# t/ c; H
4: begin0 @$ C$ A0 h. k! f
DrawString:=sys.getLoginMode(Column.Field.CurValue);8 \9 j3 ~8 a2 O7 l3 F2 E( ]- O$ i
suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);
, I( i. ]2 b9 ~" p4 e w1[4]:=math.max(Length(DrawString),w1[4]);% W: y7 S) w3 L3 g
end;( [5 [7 C4 q6 A# \& ^# X
7:begin
! I7 {5 {. s8 K- }7 d4 l DrawString:=TimeFormat(Column.Field.CurValue);
' B9 p7 q2 Q% p- h) r& M suiDBGrid1.Canvas.TextRect(Rect,Rect.Left,Rect.Top,DrawString);- t( ?6 k& z2 L& h
w1[7]:=math.max(Length(DrawString),w1[7]);1 O0 |. I( j7 F6 p& k
end;( J, a0 G* V& p
else$ y0 j% I9 T: y+ V1 D
suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
0 G. j# G& M/ ^5 ? end;0 H' Y; u: Y5 j% B( i, w
end0 ^0 k* q/ K2 i* S5 g& _
else
( o- K; J' M; z g suiDBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);3 k" m/ Z) N! u3 g# `/ T- i( T* H
finally* N# V& s! C$ B& s0 P4 ?7 x
sys.Free;
[2 q- u: m; l) Z5 q0 \ end;
$ B8 e8 c+ d* x. F7 k+ e yend;</P>
1 U0 T1 m# G7 G ^< >上面是操作DBGrid的两个事件的的例子!Orderby函数起到了一个点击标题排序并调整cell的大小使得显示完全的作用,这里在DBGrid的DrawColumnCell事件中加入将一些想将数据库中的内容换一种显示的方法,DrawString就是要显示的字符串,采用suiDBGrid1.Canvas.TextRect函数重画。这里是根据cell的ID号进行的重画,如果DBGrid是不能拖动的不会出问题,如果要实现拖动,还要动态取得cell的ID号!</P> |
zan
|