線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2886
推到 Plurk!
推到 Facebook!

有關dbgrid的外觀美化問題

答題得分者是:careychen
delphifanll
一般會員


發表:1
回覆:1
積分:0
註冊:2008-07-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-30 13:36:27 IP:58.217.xxx.xxx 訂閱

代碼如下:
在 Form1 上放置 DBGrid1、Query1、DataSource1 三個數據庫組件,設置相關的屬性,使 DBGrid1 能顯示表中的數據。然后,在 DBGrid1 的 onDrawColumnCell 事件中鍵入以下代碼,然后運行程序,就可以看到神奇的結果了。本代碼在 Windows98、Delphi5.0 環境下調試通過。
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //畫 cell 的邊框
begin
Pen.Color := $00ff0000; //定義畫筆顏色(藍色)
MoveTo(Rect.Left, Rect.Bottom); //畫筆定位
LineTo(Rect.Right, Rect.Bottom); //畫藍色的橫線
Pen.Color := $0000ff00; //定義畫筆顏色(綠色)
MoveTo(Rect.Right, Rect.Top); //畫筆定位
LineTo(Rect.Right, Rect.Bottom); //畫綠色的豎線
end;
end;
請高手幫忙分析下, if gdSelected in State then Exit;;這一句是做什么用的。
注:在查閱delphi help時還發現DefaultDrawDataCell這樣一個方法,該方法與
DefaultDrawColumnCell方法有什么不同嗎?
在此謝謝大家了。
------
一個delphi的狂熱愛好者。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-31 00:03:15 IP:59.126.xxx.xxx 訂閱

===================引 用 delphifanll 文 章===================

代碼如下:
在 Form1 上放置 DBGrid1、Query1、DataSource1 三個數據庫組件,設置相關的屬性,使 DBGrid1 能顯示表中的數據。然后,在 DBGrid1 的 onDrawColumnCell 事件中鍵入以下代碼,然后運行程序,就可以看到神奇的結果了。本代碼在 Windows98、Delphi5.0 環境下調試通過。
procedure TMainForm.DBGrid1DrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn;State: TGridDrawState);
var i :integer;
begin
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
with (Sender as TDBGrid).Canvas do //畫 cell 的邊框
begin
Pen.Color := $00ff0000; //定義畫筆顏色(藍色)
MoveTo(Rect.Left, Rect.Bottom); //畫筆定位
LineTo(Rect.Right, Rect.Bottom); //畫藍色的橫線
Pen.Color := $0000ff00; //定義畫筆顏色(綠色)
MoveTo(Rect.Right, Rect.Top); //畫筆定位
LineTo(Rect.Right, Rect.Bottom); //畫綠色的豎線
end;
end;
請高手幫忙分析下, if gdSelected in State then Exit;;這一句是做什么用的。
// 當該 Cell 是被選擇時就離開

注:在查閱delphi help時還發現DefaultDrawDataCell這樣一個方法,該方法與
DefaultDrawColumnCell方法有什么不同嗎?

DefaultDrawDataCell DefaultDrawColumnCell 兩個功能一模一樣

DrawColumnCell ==> 當 DBGrid 的屬性 DefaultDrawing 為 True 時(預設為 True);
本行程式即會自動執行,所以上面那一行其實是可以不用寫的!!

DrawDataCell , OnDrawDataCell, DefaultDrawDataCell
// 舊版相容用,其程式碼在元件內的註解為 obsolete (荒廢、陳舊)

DrawColumnCell, OnDrawColumnCell, DefaultDrawColumnCell
// 這是新版的屬性,建議使用新版的屬性來用!!


在此謝謝大家了。
------
價值的展現,來自於你用哪一個角度來看待它!!
編輯記錄
careychen 重新編輯於 2008-07-31 00:06:02, 註解 無‧
delphifanll
一般會員


發表:1
回覆:1
積分:0
註冊:2008-07-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-31 00:45:39 IP:58.217.xxx.xxx 訂閱
結案了。謝謝大俠的回復。
------
一個delphi的狂熱愛好者。
careychen
尊榮會員


發表:41
回覆:580
積分:959
註冊:2004-03-03

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-31 12:39:56 IP:218.210.xxx.xxx 訂閱
呵~~~,大俠~~~,那這位大俠~~您客氣了~~~~
------
價值的展現,來自於你用哪一個角度來看待它!!
系統時間:2024-05-04 19:30:14
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!