程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> 為Delphi數據表格增加彩色

為Delphi數據表格增加彩色

編輯:Delphi

Delphi中數據控制構件DBGrid是用來反映數據表的最重要、也是最常用的構件。在應用程序中,如果以彩色的方式來顯示DBGrid,將會增加其可視性,尤其在顯示一些重要的或者是需要警示的數據時,可以改變這些數據所在的行或列的前景和背景的顏色。

DBGrid屬性DefaultDrawing是用來控制Cell(網格)的繪制。若DefaultDrawing的缺省設置為True,意思是Delphi使用DBGrid的缺省繪制方法來制作網格和其中所包含的數據,數據是按與特定列相連接的Tfield構件的DisplayFormat或EditFormat特性來繪制的;若將DBGrid的DefaultDrawing特性設置成False,Delphi就不繪制網格或其內容,必須自行在TDBGrid的OnDrawDataCell事件中提供自己的繪制例程(自畫功能)。

在這裡將用到DBGrid的一個重要屬性:畫布Canvas,很多構件都有這一屬性。Canvas代表了當前被顯示DBGrid的表面,你如果把另行定義的顯示內容和風格指定給DBGrid對象的Canvas,DBGrid對象會把Canvas屬性值在屏幕上顯示出來。具體應用時,涉及到Canvas的Brush屬性和FillRect方法及TextOut方法。Brush屬性規定了DBGrid.Canvas顯示的圖像、顏色、風格以及訪問Windows GDI 對象句柄,FillRect方法使用當前Brush屬性填充矩形區域,方法TextOut輸出Canvas的文本內容。

以下用一個例子來詳細地說明如何顯示彩色的DBGrid。在例子中首先要有一個DBGrid構件,其次有一個用來產生彩色篩選條件的SpinEdit構件,另外還有ColorGrid構件供自由選擇數據單元的前景和背景的顏色。

1.建立名為ColorDBGrid的Project,在其窗體Form1中依次放入所需構件,並設置屬性為相應值,具體如下所列:

Table1 DatabaseName: DBDEMOS
TableName: EMPLOYEE.DB
Active: True;
   DataSource1 DataSet: Table1
   DBGrid1 DataSource1: DataSource1
DefaultDrawing: False
   SpinEdit1 Increment:200
Value: 20000
   ColorGrid1 GridOrdering: go16*1

2.為DBGrid1構件OnDrawDataCell事件編寫響應程序:

procedure TForm1.DBGrid1DrawDataCell(Sender: TObject; const Rect: TRect;Field: TField; State: TGridDrawState);
   begin
   if Table1.Fieldbyname(′Salary′).value=SpinEdit1.value then
   DBGrid1.Canvas.Brush.Color:=ColorGrid1.ForeGroundColor
   DBGrid1.Canvas.Brush.Color:=ColorGrid1.BackGroundColor;
   DBGrid1.Canvas.FillRect(Rect);
   DBGrid1.Canvas.TextOut(Rect.left+2,Rect.top+2,Field.AsString);
   end;

這個過程的作用是當SpinEdit1給定的條件得以滿足時,如′salary′變量低於或等於SpinEdit1.Value時,DBGrid1記錄以ColorGrid1的前景顏色來顯示,否則以ColorGrid1的背景顏色來顯示。然後調用DBGrid的Canvas的填充過程FillRect和文本輸出過程重新繪制DBGrid的畫面。

3.為SpinEdit1構件的OnChange事件編寫響應代碼:

procedure TForm1.SpinEdit1Change(Sender: TObject);
   begin
   DBGrid1.refresh;
   end;

當SpinEdit1構件的值有所改變時,重新刷新DBGrid1。

4.為ColorGrid1的OnChange事件編寫響應代碼:

procedure TForm1.ColorGrid1Change(Sender: TObject);
   begin
   DBGrid1.refresh;
  end;

當ColorGrid1的值有所改變時,即鼠標的右鍵或左鍵單擊ColorGrid1重新刷新DBGrid1。

5.為Form1窗體(主窗體)的OnCreate事件編寫響應代碼:

procedure TForm1.FormCreate(Sender: TObject);
   begin
   ColorGrid1.ForeGroundIndex:=9;
   ColorGrid1.BackGroundIndex:=15;
   end;

在主窗創建時,將ColorGrid1的初值設定前景為灰色,背景為白色,也即DBGrid的字體顏色為灰色,背景顏色為白色。

6.現在,可以對ColorDBGrid程序進行編譯和運行了。當用鼠標的左鍵或右鍵單擊ColorGrid1時,DBGrid的字體和背景顏色將隨之變化。

在本文中,只是簡單展示了以彩色方式顯示DBGrid的原理,當然,還可以增加程序的復雜性,使其實用化。同樣道理,也可以將這個方法擴展到其他擁有Canvas屬性的構件中,讓應用程序的用戶界面更加友好。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved