Delphi dbgrideh使用方法

來源:互聯網
上載者:User

標籤:delphi   dbgrideh   

應用執行個體
    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、重新編譯應用程式。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.