熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

Delphi中為DBGrid控件添上色彩

2022-06-13   來源: Delphi編程 

  在微軟軟件帝國的吶喊聲中VBnet和VC#net在短時間內擁有了一大批FANS能在開發工具領域和微軟一決高下的Borland公司也不甘示弱把Delphi打扮的漂漂亮亮的讓我們這些堅定的D迷依舊信心滿滿堅守這塊陣地一些對Pascal語法情有獨鐘或對VCL愛慕非凡的新生力量也加入了我們陣營之中新加入的同志大多以開發數據庫類的軟件做為初始的一步這樣對數據感知控件了解成為了必須這其中最經常用到的要屬DBGrid雖然原生的DBGrid功能已經非常強大但在實際開發工作還是會碰到捉襟見肘的時候例如將不同類型的數據用不同的顏色加以區分這個功能就非常有用這一功能有助於加強軟件與用戶的交互本文的重點將用來解釋如何在TDBGrid中改變特定行或列或單元格的顏色

  准備階段

  本文假設你已經知道如何將一個TDBGrid與數據庫相聯接最容易的方法是使用Database Form Wizard將TDBGrid與DBDemo(Delphi自帶數據庫中的employeedb相聯接選擇除Except之外的所有字段

  給TDBGrid上顏色

  ·為列上色

  第一種是最容易的一類上色最直接的讓你的用戶看到為TDBGrid中指定的某一列上色

  我們采用的方法是通過TDBGrid的TColumns屬性來完成步驟如下

  用鼠標選擇Form上的TDBGrid組件在Object Inspector中雙擊TDBGrid的Columns屬性打開Columns編輯窗口(想了解更多內容查閱Delphi幫助中的Columns editor: creating persistent columns主題

  下面你所要做的就是指定你需要改變顏色的那一行或幾行的背景顏色如果你要改變字體顏色就將Font屬性集中的Color屬性修改一下

  就是這麼簡單只要輕點幾下鼠標就可以了這樣修改之後的TDBGrid就不再是呆板的白色背景了

  ·為行上色

  第種 如果你想要為TDBGrid中所選的某一格或某些格指定顏色而且你不想使用dgRowSelect選項因為你想讓TDBGrid可以直接在TDBGrid單元格中編輯數據你應該使用TDBGrid的OnDrawColumnCell事件

  下面我們用到的技巧可以動態改變TDBGrid中的單元格文本的顏色

  代碼如下

procedure TFormDBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if TableFieldByName(Salary)AsCurrency> then
//指定所需改變顏色行的條件表達式
DBGridCanvasFontColor:=clMaroon;
//指定顏色為clMaroon
DBGridDefaultDrawColumnCell(Rect DataCol Column State);
end;


  上述代碼執行的功能是把薪水超過千元的員工(employee)記錄字體顏色用栗色(Maroon)標出來

種 如何動態改變TDBGrid中行的顏色代碼如下

procedure TFormDBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
 if TableFieldByName(Salary)AsCurrency> then
  DBGridCanvasBrushColor:=clWhite;
  DBGridDefaultDrawColumnCell(Rect DataCol Column State);
end;


  上述代碼執行的功能是把薪水超過千元的員工(employee)記錄背景用白色(White)標出來

種 如何改變指定列中某些單元格的背景色代碼如下

procedure TFormDBGridDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
 if TableFieldByName(Salary)AsCurrency> then
 begin
  DBGridCanvasFontColor:=clWhite;
  DBGridCanvasBrushColor:=clBlack;
 end;
 if DataCol = then
  DBGridDefaultDrawColumnCell(Rect DataCol Column State);
end;


  上述代碼執行的功能是把薪水超過萬的員工(employee)記錄背景用黑色(White)標出來而文本用白色標出來

  就是這樣方便因為你使用的是Delphi這句像在為Borland作廣告了呵呵我的程序在Delphi+Winxp和Delphi+Windows上編譯通過大家不妨一試


From:http://tw.wingwit.com/Article/program/Delphi/201311/24780.html
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.