DBGrid的数据显示问题!!! |
尚未結案
|
com0922cn
一般會員 ![]() ![]() 發表:3 回覆:2 積分:1 註冊:2004-11-26 發送簡訊給我 |
|
Miles
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
Hi com0922cn 兄你好, 試試這個:
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState); var Canvas: TCanvas; begin Canvas := (Sender as TDBGrid).Canvas; if (Field.Index = 0) then begin if (Field.AsString = '0') then begin Canvas.Brush.Color := clRed; Canvas.TextOut(Rect.Left,Rect.Top, '禁用'); end; if (Field.AsString = '1') then begin Canvas.Brush.Color := clGreen; Canvas.TextOut(Rect.Left,Rect.Top, '啟用'); end; end; end;我不是高手, 高手是正在銀幕前微笑的人.
------
我不是高手, 高手是正在銀幕前微笑的人. |
com0922cn
一般會員 ![]() ![]() 發表:3 回覆:2 積分:1 註冊:2004-11-26 發送簡訊給我 |
Miles 你好:
我试过了!在填充DBGrid1时下述事件无法触发!
procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect; Field: TField; State: TGridDrawState);
但是下面这个事件却可以被触发!
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
为什么?针对这个事件代码又该如何编写?
谢谢……
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 試試如下的方法于DBGrid元件的OnDrawColumnCell事件中﹕
Var Str : String; begin if SameText(Column.FieldName, '欄位名稱') then //上句欄位名稱請代入此TinyInt形態欄位的名稱 begin Str := ''; if Column.Field.AsInteger = 0 then Str := '禁用' else if Column.Field.AsInteger = 1 then Str := '啟用' if Str <> '' then begin DBGrid1.Canvas.TextRect(Rect, Rect.Left 2, Rect.Top 2, Str); end; end; end;========================= 我是您的朋友﹐有您真好﹗ =========================
------
忻晟 |
Miles
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:27 回覆:662 積分:622 註冊:2002-07-12 發送簡訊給我 |
|
com0922cn
一般會員 ![]() ![]() 發表:3 回覆:2 積分:1 註冊:2004-11-26 發送簡訊給我 |
|
cashxin2002
版主 ![]() ![]() ![]() ![]() ![]() ![]() 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ DBGrid元件的OnDrawColumnCell事件是指當應有程式需要繪制DBGrid元件的某個
欄位時引發的事件﹒DBGrid元件具有自動重繪預設內容的功能﹐是由其
DefaultDrawing屬性控制的﹐當DefaultDrawing屬性值為True時﹐DBGrid就會自
動以預設值重會每個Cell﹐然后再引發OnDrawColumnCell事件﹐相反的﹐若屬性
值為False﹐則不會有自動重繪的功能﹐而是直接引發OnDrawColumnCell事件中
的程式﹒
OnDrawDataCell事件使用得比較少﹐參考了一下Help﹐對這兩個事件的比較是這
樣寫的﹐相對而言﹐似乎更贊成使用OnDrawDataCell事件﹒
OnDrawDataCell事件
Do not write an OnDrawDataCell event handler. OnDrawDataCell is
obsolete and included for backward compatibility. Instead, write an
OnDrawColumnCell event handler.
OnDrawColumnCell事件
Write an OnDrawColumnCell event handler to provide customized drawing for the data in the cells of the grid. Draw on the cell using the methods of the Canvas property. =========================
我是您的朋友﹐有您真好﹗
=========================
------
忻晟 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |