Delphi dbgrideh使用方法(一)

Delphi 2011-01-05 15:44:52 閱讀0 評論0   字號: 訂閱

應用實例
    Enlib組件包安裝成功後,在系統的組件面板中會顯示“enlib”組件包標籤(如圖1),添加DBGridEh到窗體的方法與其它組件一樣。在窗體中添加該組件後,請跟我一起來實現圖2的一些特殊效果,具體屬性設置請參考屬性表的說明。

 

A、定製標題行
1、製作複雜標題行
    標題行可設爲2行以上高度,並可以爲多列創建一個共同的父標題行。爲實現這個效果,需在各個列標題屬性中以“|”分隔父標題和子標題,如辦公用品包括代碼和名稱兩部分,具體屬性設置如下:

usemultititile=true;
titlelines=2
DBGridEh.Columns[0].Title.Caption := '辦公用品|代碼';
DBGridEh.Columns[1].Title.Caption := '辦公用品|名稱';

2、標題行顯示圖片
    實現圖2中的購買人標題行顯示效果。首先添加一個imagelist組件img1並在其中添加一組bmp,ico格式的圖片。然後將DBGridEh的TitleImages設置爲img1.最後在需要顯示圖片的列標題的imageindex中設置需要顯示的img1中圖片的序號。按F9執行一下程序,是不是很酷!

3、自動顯示標題行的升降排序標誌符(▽降序△升序)並做相應排序
    DBGridEh組件可以在標題行單元格中顯示小三角形升、降排序標誌符圖片,在運行時可點擊標題行,圖片自動切換並做相應排序。具體屬性設置如下:

OptionsEh=dghAutoSortMarking
Column.Title.TitleButton=true

SortMarkedColumns 爲當前排序列可在運行時使用.
然後在該列的ontitleclick事件中添加代碼:
procedure TForm_Query.DBGridEh1TitleBtnClick(Sender: TObject; ACol: Integer; Column: TColumnEh);
var
  sortstring:string; //排序列
begin
  //進行排序
  with Column do
  begin
    if FieldName = '' then
      Exit;
    case Title.SortMarker of
      smNoneEh:
      begin
        Title.SortMarker := smDownEh;
        sortstring := Column.FieldName + ' ASC';
      end;
      smDownEh: sortstring := Column.FieldName + ' ASC';
      smUpEh: sortstring := Column.FieldName + ' DESC';
    end;
  //進行排序
    try
      dataset.Sort := sortstring //dataset爲實際數據集變量名
    except
    end;
  end;
end;

切記lookup型字段不可做上述設置,否則系統會提示錯誤。

    另外,組件說明書中提到不需要編寫代碼即可自動排序,但是不編寫代碼自動排序方法我還沒找到,有知道的朋友煩請告訴我一聲啊!讓我也對程序代碼進行“減肥”。

 

B、定製表格底部(footer)區域的彙總統計行
    DBGridEh 組件可以在表格底部顯示彙總行,如記錄數合計、列字段累加和等信息。在FooterRowCount中設置底部顯示的行數;然後在Footers 編輯器中添加一個或多個顯示列,顯示列可以是字段值累加和、記錄數合計、字段值或靜態文件等集合類型,可以在設計時在ValueType屬性中設置,也可在運行時通過設置Footers[i].ValueType指定其類型。其含義見下表:

    切記設置DBGridEh.SumList.Active 爲 True,纔會進行彙總統計運算。需注意的是,如顯示類型爲不是當前列的累加和,則需在fieldname屬性中指定彙總列,其它類型則無此要求。

 

C、定製表格數據單元外觀
1、根據不同字段值顯示相應的小圖片
    如根據庫存材料的不同狀態在數據單元格中顯示相應圖片,具體設置如下:
    添加一個imagelist組件img1並在其中添加一組bmp,ico格式的圖片。然後將需要顯示圖片的列的imagelist屬性設置爲img1;在keylist屬性中添加實際數據存儲值,一行爲一個值,切記一定要與imagelist中圖片順序一一對應,否則會張冠李戴,面目全非。還可在picklist中添加提示信息,也要求是一行爲一個值,並設tooltip爲true,那麼,運行時當鼠標移動到該數據單元格時在顯示圖片的同時還顯示提示信息,怎麼樣,功能夠強大吧!可使用空格鍵或鼠標切換下一張圖片,圖片切換的同時也改變了實際存儲數據值。也可通過shift+空格或鼠標切換爲上一張圖片。這樣就實現了上下兩個方向圖片切換。

2、顯示檢查框(checkbox)外觀
    對於Boolean型字段值在dbgrideh組件中自動顯示爲檢查框。通常情況下我們需將非Boolean型字段值也此外觀顯示,如性別字段爲字符型,字段值爲“男性”時爲選中,“女性”時爲未選中。需要在keylist編輯器中設置實際存儲數據值,第一行爲選中時的值“1”,第二行爲未選中的值“0”,第三行爲其它值“2”,支持三態顯示。

3、顯示單、多列下拉列表
    根據單元格字段值顯示與其相關的其它表字段內容,如部門代碼字段顯示爲部門名稱。首先需在當前表中新建立一個lookup型字段,設置好關聯表的字段和返回字段。多列下拉列表需在單列基礎上做進一步設置,在LookupDisplayFields中以“;”號將關聯表中多個字段分隔開,而且返回字段必須作爲其中的第一項。具體設置如下:

dropdownshowtitles=true
dropdownsizing=true
dropdownwidth=-1

    例:當前表中只有部門代碼無部門名稱列,需與部門表建立關聯,當點擊單元格時以部門代碼、部門名稱兩列下拉列表形式顯示。

4、顯示日曆下拉列表
    Date 和 DateTime類型字段值均可以此形式顯示。外觀與編輯框無異,當點擊該單元格時,右側會出現“▽”符號,點擊之即可出現日曆下拉列表。有時不希望出現日曆下拉列表,只需設置Column.ButtonStyle屬性爲 cbsNone即可,此方法同樣適用於其它組件不以特殊外觀顯示的情況。

5、3D或平面外觀效果
    設置OptionsEh屬性 中fixed, frozen, footer 和 data rows等屬性表格外觀爲3D效果,設置flat爲true則爲平面外觀效果.

6、鎖定多列不滾動
    當表格水平方向信息在一屏幕顯示不下時,此項功能非常有用。例如,工資表格中包含姓名、基本工資、績效工資等信息一屏幕顯示不下,需要通過移動水平滾動條顯示下一屏信息。如果不鎖定關鍵字段列如姓名,則移動到下一屏時就不知道此條記錄對應的姓名。因此,在實際應用中經常需鎖定多列不滾動。

    例:姓名字段爲表格第二列,則設置FrozenCols=2.這樣當一屏幕顯示不下,通過移動水平滾動條顯示下一屏信息時,表格前兩列不滾動,作爲參照列。
E、將存在的DBGrid組件轉換爲DBGridEh組件.
    通過筆者上述介紹,想必你已經對Enlib組件包產生好感而且越越欲試了,那就趕快下載使用吧。但是,使用一段時間並且喜歡上它後,你又有新的問題產生了,那就是爲了保持界面風格一致,能否將已經開發完成的應用程序中的DBGrid組件能否轉換爲DBGridEh組件,進行一次徹底革命?答案是肯定的。儘管DBGridEh並不是繼承於CustomDBGrid組件, 但是DBGridEh和DBGrid它們之間有許多相同之處.因此可以相互轉換。

具體步驟如下:
1、在Delphi IDE下打開TDBGrid組件.
2、通過組合鍵Alt-F12將form 以文本方式顯示;
3、將所有TDBGrid 對象名改變爲 TDBGridEh對象名,如:DBGrid1: TDBGrid改爲 DBGrid1: TDBGridEh;
4、再次通過組合鍵Alt-F12將文本方式恢復爲form 顯示;
5、將form各相關事件中定義的所有TDBGrid改爲TDBGrideh,如DBGrid1: TDBGrid改爲DBGrid1: TDBGridEh;
6、重新編譯應用程序。

發佈了76 篇原創文章 · 獲贊 2 · 訪問量 16萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章