天天看點

DBGridEh 應用

定制網格标題

複雜标題

tdbgrideh 允許在多列上建立标題,例如:

設定 dbgrideh.usemultititle 屬性為 true 并且填充字段的标簽或列标題的标題,可以使用下面的規則:字段标簽中的文本部分或列标題必須由幾部分組成,并且用 "|" 分割,幾個列的每一個通用部分都設定為相同。其它字段或标題必須在相應的部分包含同樣的文本。  

例如:

field1.displaylabel := 'title1|subtitle1';

field2.displaylabel := 'title1|subtitle2';

    或

dbgrideh.columns[0].title.caption := 'title1|subtitle1';

dbgrideh.columns[1].title.caption := 'title1|subtitle2';

按鈕式标題

設定column.title.titlebutton 為 true可以強制标題單元為按鈕式。寫 ontitlebtnclick事件來控制使用者單擊标題單元時的操作。  

在标題中顯示位圖

to show bitmap in titles instead of caption use titleimages property of tdbgrideh and imageindex property of tcolumntitleeh.

自動用位置辨別排序标題.

tdbgrideh allows to show special  sortmarking bitmaps (small triangles) in the right part of title cell. in order to automatically marking title by sortmarking bitmaps add dghautosortmarking to optionseh property. add dghmultisortmarking too in order to allow sortmarking several columns simultaneously. set column.title.titlebutton to true for titles which will have possibility to change sortmarkers at run time. at runtime clicking on title will change sortmarking. holding ctrl key allows to mark several columns simultaneously. after user change sormarking grid call onsortmarkingchanged event. you can write this event to change sorting and reopen in dataset. use sortmarkedcolumns property to access to sortmarked columns.

标題屬性的預設值

使用tdbgrideh.columndefvalues.title來設定标題屬性的預設值。

定制網格頁腳

頁腳以及統計值

tdbgrideh allows to show special row (footer) or rows at bottom part. use footerrowcount property to specify the number of footer rows in the grid. use footer or footers property of tcolumneh object to specify information which need to show in footer cells. footers property useful then you have more then one footer rows. footers is a collection of tcolumnfootereh objects where information from i-th aliment of collection will be show in i-th cell of footer column. in footer cell, it is possible to show: sum value for specified field, record count, value of a specified field or static text. use property footer.valuetype or footers[i].valuetype to specify which type of value will be show in footer cell. if valuetype = fvtstatictext, then set the property value to specify text which need to show. if valuetype = fvtfieldvalue, then you need to set property fieldname to specify field, value of which need to show. to force grid to calculate total values need to activate sumlist (dbgrideh.sumlist.active := true). set valuetype to fvtsum and grid must to show sum value of the column field in the footer cell, you can also specify column.footer.fieldname to calculate total value of the other field. set valuetype to fvtcount to force grid to show count of records in the footer cell.

定制網格資料單元

在資料單元中顯示字段值為圖形。

tdbgrideh allows to show bitmaps from timagelist component depending on field values. to show bitmaps depending on field values need: fill list of field values to column.keylist property (every value in separate line) and set column.imagelist property to imagelist control that has the bitmap in according index. set column.notinkeylistindex to index of bitmap that will be shown if field's value does not correspond to any value in keylist (for instance you can set index of image for null field value). at run time you are not allowed to edit bitmap in column cell. use blank key and mouse click to set next value from column.keylist to the field; shift-blank key and shift-mouse click to set previous value from column.keylist. set column.dblclicknextval to true have allows to change value on mouse double click.

檢查框式的邏輯及非邏輯值

grid automatically shows checkboxes for boolean field. to show checkboxes for non boolean fields fill first line of column.keylist property that corresponds to the checked state of the checkbox, second line - non checked state, and set column.checkboxes ptoperty to true. line of keylist can represent more than one value in a semicolon-delimited list of items.

資料行高度

使用 rowheight 和 rowlines 屬性來指定資料行高。完整的資料行高 = 行線高度+行高。設定 rowsizingallowed 為 true 以允許可以在運作是使用滑鼠來改變行高。

設定column.wordwrap為true可以使資料行中文本多行顯示。如果行高>文本行,它就換行。

顯示備注字段

設定 drawmemotext to true來顯示文本式的備注字段。.

定制單元格字型及顔色

tdbgrideh 中的 font 和 color 屬性描述了資料網格中繪制單元格的字型和顔色。

tcolumneh 中的 font 和 color 屬性描述了指定列中繪制單元格的字型和顔色。

事件定制單元格字型及顔色

有幾個事件可以讓你能夠在繪制單元格前定制單元格字型和顔色。你可以寫tdbgrideh的ondrawcolumncellevent事件句柄來在控制在網格單元中繪制資料。你可以使用canvas屬性的方法來繪制單元格。但是如果你隻想改變字型或顔色的屬性,我建議你使用下面的事件。你可以寫tdbgrideh的ongetcellparams事件來控制在繪制資料單元以前所指定的操作。你可以改變繪制字型及背景色。這個事件适合你在想改變整行的字型或顔色時使用。如果你想改變指定列中單元格的屬性,你可以使用tcolumneh.ongetcellparams。寫這個事件用來控制在一列資料單元被重繪或編輯時的操作。在一列資料單元被重繪以前,你可以改變繪制字型,背景色,對齊方式,圖像索引,文本或檢查框。在編輯一列資料單元以前,你可以改變編輯字型,背景色,文本或隻讀狀态。  

列屬性的預設值

使用columndefvalues屬性來設定列屬性的預設值。新建立的列将從columndefvalues屬性中獲得屬性值,并且直到第一次為其指定值為止。

在網格的适當位置放置編輯器.

在下拉清單中顯示幾個字段。

在下拉清單中顯示幾個下拉字段,需要設定列的lookupdisplayfields屬性到字段的semicolons屬性來分割多個字段名。命名為column.field.lookupresultfield的屬性必須位于lookupdisplayfields清單中。多字段的下拉清單隻能應用于下拉字段。

顯示下拉方式的列

你可以通過keylist 和 picklist 屬性在相關的的字段中顯示其它文本。keylist顯示包含在字段的值而非picklist索引所包含的值。 column.notinkeylistindex to index of text from picklist that will be shown if field value do not contain in keylist (for instance you can set index of text for null field value). set column.dblclicknextval to true to change value on mouse double click.

下拉式電腦

對于 tdatefield 和 tdatetimefield 字段,inplace 編輯器将顯示下拉按鈕以顯示顯示下拉電腦。設定 column.buttonstyle 為 cbsnone 以禁止顯示下拉按鈕。

設定編輯器顔色和字型

inplace編輯器可以設定資料單元的顔色和字型。資料單元使用ongetcellparams 事件來控制列的顔色和字型。 inplace 編輯器在行高>一行的高度時自動設定為多行模式并且将列的屬性 wordwrap 設定為true.

自動填充網格列寬到網格客戶區

設定autofitcolwidths為true以自動重置列寬來設定網格的寬度等于客戶區寬度。 minautofitwidth 屬性決定網格的最小寬度,列寬将會被重新計算。

3d或平面外觀

使用 optionseh 屬性來顯示/隐藏固定的3d架構,冷區,頁腳以及資料行。

使用 flat 屬性來設定用平面方式顯示資料網格。

從多種格式導入/導出資料到tdbgrideh。

ehlib 的函數集可以從dbgrideh導出資料到text, csv, html, rtf, xls以及其内部格式。它可以儲存資料到流(tstream對象)或檔案。  

例子

pascal: savedbgridehtoexportfile(tdbgridehexportastext,dbgrideh1,'c:/temp/file1.txt',false);

c++: savedbgridehtoexportfile(__classid(tdbgridehexportastext),dbgrideh1,"c://temp//file1.txt",false);

ehlib 的函數集可以從 text以及其内部格式的資料導入到dbgrideh的資料集中。它可以從檔案中讀取資料或讀取資料到流(tstream對象)。  

其它特性

用lookup 編輯器,你可以在運作時清空(設定為null) lookupkeyfield 值。比如選擇整個文本然後按delete鍵。  

冷區

冷區是資料網格列集左邊顯示的不可滾動的區域。與固定列不同的是,冷區的列可以獲得編輯焦點。可以通過設定frozencols屬性來設定右邊不可滾動的列集。

增量搜尋

tdbgrideh 允許使用者在網格列中實作特定的“增量”搜尋。當使用者進入增量搜尋時他可以顯示字元以及網格,并且在目前的列中查找文本。使用 dghincsearch 和 dghpreferincsearch的值(在optionseh 選項中) 在資料網格中操作增量搜尋。 dghincsearch 值允許在資料網格中進行增量搜尋。運作時你能夠使用下面的鍵進行增量搜尋:

    ctrl+f - 開始增量搜尋。

    ctrl+enter - 查找下一個比對記錄。

    ctrl+shift+enter - 查找前一個比對記錄。

如果optionseh選項中的 dghincsearch 是隻讀的,那麼網絡将自動設定增量模式在第一次按鍵以及1.5秒後傳回普通模式。 dghpreferincsearch 值決定網格設定自動增量搜尋模式在第一次按鍵時替代單元編輯。

水準或垂直滾動條

使用 vertsctollbar, horzsctollbar 屬性來顯示/隐藏以及跟蹤水準或垂直滾動條。

多選

tdbgrideh 允許在標明的區域上進行選擇記錄,列以及矩形區域等操作:

允許多選會影響下面這些屬性:

    options選項中的dgmultiselect屬性 - 設定是否允許多選。

    options選項中的dghclearselection 屬性- 設定在使用者移到下一個單元時是否清除已選記錄。

    options選項中的editactions屬性 -設定使用者可以在已選記錄上執行哪些操作(比如,拷貝,剪切,删除,粘貼,全選等)。

    options選項中的allowedselections屬性-設定允許標明記錄的類型(比如,行,列,矩形區域等)。

    options選項中的selection屬性-設定一個目前的多選狀态,已選記錄,列或矩形區域以及存取它們的屬性和函數。  

從系統資料庫或ini檔案中儲存或恢複網格和列的層次。

tdbgrideh 有一個正常設定來從系統資料庫或ini檔案中儲存和恢複網絡以及列的層次:

    restorecolumnslayout    - 從系統資料庫中恢複列的次序,寬度,排序标志。

    restorecolumnslayoutini    - 從ini檔案中恢複列的次序,寬度,排序标志。

    restoregridlayout    - 從系統資料庫中恢複列的次序,寬度,可視,排序标志,排序索引或行高。

    restoregridlayoutini    - 從ini檔案中恢複列的次序,寬度,可視,排序标志,排序索引或行高。

    savecolumnslayout    - 儲存列的次序,寬度,排序标志到系統資料庫中。

    savecolumnslayoutini    - 儲存列的次序,寬度,排序标志到ini檔案中。

    savegridlayout    - 儲存列的次序,寬度,可視,排序标志,排序索引或行高到系統資料庫中。

    savegridlayoutini    - 儲存列的次序,寬度,可視,排序标志,排序索引或行高到ini檔案中。

目前版本的tdbgrideh不支援的特性:

這個版本的tdbgrideh不支援下面的特性:

    tdbgrideh 不能設定每一個資料視窗中單獨行的行高。

    tdbgrideh 不能象treeview那樣工作。它不能擁有節點和枝葉。

    tdbgrideh 不能橫向或縱向合并資料單元。

将已存在的tdbgrid元件轉換為tdbgrideh元件:

盡管tdbgrideh并不是從tcustomdbgrid元件繼承而來的,但是在tdbgrideh和tdbgrid中還是有一些相似的屬性。

它允許僅用一點點代價來轉換已存在的tdbgrid元件到tdbgrideh。

可以按照下面的提示來轉轉換已存在的tdbgrid元件到tdbgrideh:

在delphi的ide中打開包含有tdbgrid元件的應用程式。

設定視圖方式為文本方式(alt-f12)。  

繼續閱讀