有關dbgrid的外觀美化問題 |
答題得分者是:careychen
|
delphifanll
一般會員 發表:1 回覆:1 積分:0 註冊:2008-07-30 發送簡訊給我 |
代碼如下: 在 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 發送簡訊給我 |
===================引 用 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 發送簡訊給我 |
|
careychen
尊榮會員 發表:41 回覆:580 積分:959 註冊:2004-03-03 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |