DBGridEh的data group的使用(轉)

文章來源:http://blog.csdn.net/ghs79/article/details/73614139編輯器

 

1、設置數據關係ide

一、要利用DBGridEh的datagroup功能,必須是關聯數據集MemTableEh1;不但是傳統的ADOQuery,Clientdataset等。.net

二、好在MemTableEh1有自動從其它數據集中取數據的功能,設置好對應關係,便可完成數據的轉換。我是從ADO取的數據,因此關係以下。設計

    ADOQuery1.connection := ADOconnnect1;orm

//設置數據轉換關係blog

SQLDataDriverEh1.providerdataset := ADOQuery1;事件

    MemTableEh1.datadriver := SQLDataDriverEh1;io

MemTableEh1.active := True;//到此能夠取到數據。變量

//下面設置數據顯示sed

DBGridEh1.datasource := datasource1;

DataSource1.dataset := MemTableEh1;

2、設置datagroup顯示

 

都是在設計期,在 Object Inspector 裏面,針對 DbGridEh1 的 DataGrouping 屬性,拉開後,設置裏面的屬性:

1. Active - True;
2. GroupPanelVisible - True; 注意若是隻設置這兩項,則運行時,它會顯示一個 Panel 在 DBGrid 的頂上,並有英文提示,拖一個字段到這裏,它會自動根據這個字段進行分組顯示。
3. GroupLevels 點開,在彈出來的窗口裏面,增長一條,相似增長一個字段同樣的操做。
3.1. 在增長的這一條的屬性裏面,選擇 ColumnName,下拉開,若是 DBGridEh1 已經在設計期加了靜態字段,這裏就會看到幾個字段,挑選須要用來做爲分組依據的字段。DBGridEh1 將會用這個字段來進行分組。
4. 分組統計:Footers 點開,彈出一個窗口,相似字段編輯器。增長一條。
4.1. 選中增長的一條,屬性裏面選擇 ColumnItems,會彈出窗口,窗口裏面是前述的三個字段(必須是設計期已經爲 DBGridEh1 增長了靜態字段)。
4.2. 選擇 須要合計的 字段,屬性裏面的 ValueType 下拉選擇 gfvSumEh。就會在分組的 Footer 裏面顯示這一組的合計數字(小計)。
5. DefaultStateExpanded - True 表格會加載後自動展開。不然加載後,是收縮的,只顯示組,不顯示組裏面的記錄。

3、至此已經能夠顯示分組數據,可是對於須要計算比值的(如毛利率、佔比等)卻無能爲力,經過事件DBGridEh1DataGroupFooterToDisplayText來修正。

一、先定義一個單元內的變量cb, ss: Currency;二、procedure TForm1.DBGridEh1DataGroupFooterToDisplayText(  Grid: TCustomDBGridEh; Column: TColumnEh;  GroupFooter: TGridDataGroupFooterEh;  FooterColumnItem: TGridDataGroupFooterColumnItemEh; var AValue: Variant;  var DisplayValue: String; var Processed: Boolean);begin  //修正分組合計的值  if Column.FieldName = 'DML' then  begin    if ss <> 0 then    begin      DisplayValue := '毛利率:' + FormatFloat('##.##%', cb/ss * 100 );      Processed := True; //告訴系統,按我修正後的內容顯示    end;  end  else if Column.FieldName = 'DMONEY_IN' then    cb := AValue //記錄變量值  else if Column.FieldName = 'DMONEY_SS' then    ss := AValueend;

相關文章
相關標籤/搜索