Difference between revisions of "TDBGridControler"

From Lazarus wiki
Jump to navigationJump to search
(Five changed the content model of the page TDBGridControler from "JavaScript" to "wikitext")
Tag: content model change
 
(9 intermediate revisions by the same user not shown)
Line 1: Line 1:
== TDBGridControler is a non visual component with no dependencies providing added functionalities for the TDBGrid object==
 
 
 
 
Package download link : https://gitlab.com/lazaruscomponent/dbgridcontroler
 
 
 
[[File:TdxDBGridControler_200.png|32px||Left|]] TDBGridControler component
 
 
 
; You need more functionalities? A grid controller that provide extra features to your existing TDBGrid
 
 
* Searching expression in the grid
 
* Searching expression in column
 
* Column filter editor
 
* Datetime editor, memo editor and lookup editor
 
* Saving the current filter view
 
* Multi column sorting
 
* Column chooser editor
 
* Column grouping visual separator on one level
 
* Footer and aggregation on columns
 
 
 
; TDBGrid Overidden Events to achive the task
 
 
* OnCellDraw
 
* OnCellHint
 
* OnEditorEdit
 
* OnMouseClick
 
* OnTitleClick
 
* OnTitleDraw
 
 
 
 
{| class="wikitable"
 
|+ TDBGridControler events
 
|-
 
|OnAfterFilterGrid
 
|After filter execution
 
|-
 
|OnAfterSortColumn
 
|After a column is sorted
 
|-
 
|OnAggregation
 
|Define which column is showing an aggregation
 
|-
 
|OnBeforeSortColumn
 
|Before a column is sorted
 
|-
 
|OnLocalize
 
|Use to translate string resources
 
|-
 
|OnPrepareLookupDataset
 
|Use to prepare the lookup dataset
 
|-
 
|OnSortColumn
 
|Custom sort event, could be use to change order by statement in the SQL query   
 
|}
 
 
 
; Aggregation example on 2 lines
 
 
<syntaxhighlight lang="pascal">
 
Procedure TForm1.dxDBGridControler1Aggregation(Sender: TdxDBGridControler);
 
Begin
 
  Sender.ColumnPropertyList.ColumnPropertyByName('ProjectManager').FooterAlignment  := taRightJustify;
 
  Sender.ColumnPropertyList.ColumnPropertyByName('ProjectManager').FooterDisplayText :=
 
      'Count Distinct : ' + Sender.ColumnPropertyList.Aggregation(agDistinct, 'ProjectManager').AsString;
 
 
 
  // Use the FooterPanel property to set the height : dxDBGridControler1.FooterPanel.Height := Self.DBGrid1.DefaultRowHeight * 2; 
 
  Sender.ColumnPropertyList.ColumnPropertyByName('OpeningDate').FooterAlignment  := taCenter;
 
  Sender.ColumnPropertyList.ColumnPropertyByName('OpeningDate').FooterDisplayText :=
 
      'Min : ' + Sender.ColumnPropertyList.Aggregation(agMin, 'OpeningDate').AsString + Char(13) + Char(10) +
 
      'Max : ' + Sender.ColumnPropertyList.Aggregation(agMax, 'OpeningDate').AsString;
 
End;
 
‎</syntaxhighlight>
 
 
 
; Localization example, french translation of some of the component string resources
 
 
<syntaxhighlight lang="pascal">
 
Procedure TForm1.dxDBGridControler1Localize(Sender: TObject; Component: TComponent; ID_Ressource: String; Var Translation: String);
 
Begin
 
  If ID_Ressource = msg_search Then
 
      Translation := 'Recherche...'
 
  Else If ID_Ressource = msg_first Then
 
      Translation := 'Aller au début'
 
  Else If ID_Ressource = msg_prior Then
 
      Translation := 'Précédent'
 
  Else If ID_Ressource = msg_next Then
 
      Translation := 'Suivant'
 
  Else If ID_Ressource = msg_last Then
 
      Translation := 'Aller à la fin'
 
  Else If ID_Ressource = msg_add Then
 
      Translation := 'Ajouter'
 
  Else If ID_Ressource = msg_delete Then
 
      Translation := 'Détruire'
 
  Else If ID_Ressource = msg_edit Then
 
      Translation := 'Éditer'
 
  Else If ID_Ressource = msg_save Then
 
      Translation := 'Enregistrer'
 
  Else If ID_Ressource = msg_cancel Then
 
      Translation := 'Annuler'
 
  Else If ID_Ressource = msg_refresh Then
 
      Translation := 'Actualiser'
 
  Else If ID_Ressource = msg_btncancel Then
 
      Translation := 'Annuler'
 
  Else If ID_Ressource = msg_of Then
 
      Translation := 'de'
 
  Else If ID_Ressource = msg_nodata Then
 
      Translation := 'Aucune donnée trouvée!';
 
End;
 
‎</syntaxhighlight>
 
 
 
; Screen shots
 
 
[[File:TdxDBGridControler_SearchGrid.png]]
 
 
 
[[File:TdxDBGridControler_MultiSort.png]]
 
 
 
[[File:TdxDBGridControler_Properties.png]]
 
 
 
 
== See also ==
 
== See also ==
  
* [[doc:lcl/dbgrids/tdbgrid.html|TDBGrid doc]]
+
* [[TDBGridController]]
* [[TDBGrid]]
 
* [[TDBGridControler]]
 
* [[TStringGrid]]
 
* [[Grids Reference Page]]
 

Latest revision as of 15:50, 30 December 2022