就是這麼簡單,只要輕點幾下鼠標就可以了,這樣修改之後的TDBGrid就不再是呆板的白色背景了。
為行上色
第1種 如果你想要為TDBGrid中所選的某一格或某些格指定顏色,而且你不想使用dgRowSelect選項,因為你想讓TDBGrid可以直接在TDBGrid單元格中編輯數據,你應該使用TDBGrid的OnDrawColumnCell事件。
下面我們用到的技巧可以動態改變TDBGrid中的單元格文本的顏色。
代碼如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FIEldByName(’Salary’).AsCurrency>36000 then
//指定所需改變顏色行的條件表達式
DBGrid1.Canvas.Font.Color:=clMaroon;
//指定顏色為clMaroon
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上述代碼執行的功能是:把薪水超過3萬6千元的員工(employee)記錄字體顏色用栗色(Maroon)標出來。
圖2
第2種 如何動態改變TDBGrid中行的顏色,代碼如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if Table1.FIEldByName(’Salary’).AsCurrency>36000 then
DBGrid1.Canvas.Brush.Color:=clWhite;
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上述代碼執行的功能是:把薪水超過3萬6千元的員工(employee)記錄背景用白色(White)標出來。
圖3
第3種 如何改變指定列中某些單元格的背景色,代碼如下:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn;
State: TGridDrawState);
begin
if Table1.FIEldByName(’Salary’).AsCurrency>40000 then
begin
DBGrid1.Canvas.Font.Color:=clWhite;
DBGrid1.Canvas.Brush.Color:=clBlack;
end;
if DataCol = 4 then
DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
上述代碼執行的功能是:把薪水超過4萬的員工(employee)記錄背景用黑色(White)標出來而文本用白色標出來。
就是這樣方便,因為你使用的是Delphi,這句像在為Borland作廣告了,呵呵,我的程序在Delphi7+Winxp和Delphi+Windows2000上編譯通過,大家不妨一試。