最近研究了一下UniGUI的TuniDBGrid,記錄一下省得忘記了。前端
TuniDBGrid的重要屬性包括:ide
一、列—TUniDBGridColumns和TUniDBGridColumnidea
每一個列對象(TUniDBGridColumn)的重要屬性包括:spa
列做爲CheckBox操做的相關屬性orm
屬性對象 |
類型blog |
說明排序 |
AutoPost事件 |
Boolean圖片 |
當用戶點選CheckBox後,改變前端顯示並根據該屬性決定: True—當即自動提交到數據集中並刷新前端顯示 False—只改變前端顯示,當記錄滾動時再提交數據集 |
BooleanFieldOnly |
Boolean |
是否只針對Boolean字段, True—只能識別Boolean字段,非Boolean字段將不能顯示CheckBox False—DisplayValues和FieldValues能夠針對非Boolean字段進行處理 |
Enabled |
Boolean |
是否容許顯示CheckBox |
DisplayValues/ FieldValues |
string |
聯合決定了CheckBox不一樣狀態下對應的值,FieldValues存儲字段值,DisplayValues存儲顯示文字,若是空白就表示不顯示文字,只顯示CheckBox,每一個值經過分號(;)區分,文字顯示CheckBox的右側。以下圖: |
對TMemoField而言,是否顯示(Memo)字樣,缺省爲False
False—不顯示字段內容,顯示(Memo)字樣
True—不顯示(Memo)字樣,而是直接顯示字段內容
在列標題下顯示過濾編輯框,自動對列數據進行過濾,以下圖:
參考Demos下的GridFilter例子。要實現該功能,必須:
A.放一個TUniHiddenPanel控件在窗體上,而後將TUniEdit、TUniComboBox 、TUniDBLookupComboBox等控件放置在這個隱藏的Panel上,以下圖:
B.設置每一個列的Filtering,將其Editor屬性設置對應的編輯控件
C. 對編輯控件進行相關屬性設置,如TUniDBLookupComboBox須要設置ListSource等
屬性 |
類型 |
說明 |
ChangeDelay |
Integer |
當用戶鍵入字符後,延時進行過濾處理的毫秒數 |
Editor |
TControl |
過濾的輸入框,按照輸入框內容進行過濾。TUniDBLookupComboBox按照KeyField的值進行過濾 |
Enabled |
Boolean |
是否容許進行過濾 |
多欄顯示錶頭,如GroupHeader = a;b;c 時的樣式見下圖:
是否顯示合計值,與Grid的Summary的屬性聯合使用。
是否容許進行排序操做。容許排序操做時,在字段名稱旁顯示排序符號,而且在Menu中的排序菜單是可用的,以下圖:
對該字段進行編輯時,對應的單元採用怎樣的控件進行處理,這個功能很是強大,如設置TuniComboBox做爲Editor則徹底替代字段Picklist的功能,以下圖:
對列標題下拉顯示的菜單進行控制
屬性 |
類型 |
說明 |
ColoumnHideable |
Boolean |
是否容許隱藏字段,缺省True,即容許用戶經過勾選隱藏指定的列,以下圖: |
MenuEnabled |
Boolean |
是否容許顯示列的菜單 |
MenuText |
String |
該列顯示在菜單上的文字,缺省爲空,表示顯示字段DisplayLabel,不然顯示該文字。以下圖: |
當該字段須要顯示圖片時,聯合使用ImageOptions屬性和OnFieldImage事件,其中:
屬性 |
類型 |
說明 |
Height/Width |
Integer |
顯示圖片的大小 |
Visible |
Boolean |
是否顯示圖片,True則觸發OnFieldImage事件進行圖片處理,如: procedure TMainForm.UniDBGrid1FieldImage(const Column: TUniDBGridColumn; const AField: TField; var OutImage: TGraphic; var DoNotDispose: Boolean; var ATransparent: TUniTransparentOption); begin if SameText(AField.FieldName, 'gender') then begin // 代碼處理圖片 DoNotDispose := True; // 根據字段值返回圖片 if AField.AsString = 'male' then OutImage := UniImage1.Picture.Graphic else if AField.AsString = 'female' then OutImage := UniImage2.Picture.Graphic; end; end; |
該方法可讓列顯示某項圖片按鈕,如: