TDataGrid - Exemples

TDataGrid = class (TObject)Interface de TDataGridExemples de TDataGrid

Voici un exemple basique de création et d'utilisation d'une instance de TDataGrid:

var grille := new TDataGrid;

// déclaration des colonnes :
grille.AddColumn('NOM', cssText);
grille.AddColumn('REF', cssText);
grille.AddColumn('DATE', cssDateTime);
grille.AddColumn('MONTANT', cssNumeric);

// initialisation et remplissage de la première ligne
grille.Append;
grille.CellData[0] := 'Transports Dubois';
grille.CellData[1] := '0028';
grille.CellData[2] := '23/07/2007';
grille.CellData[3] := '1500';

grille.Append;
grille['NOM'] := 'Menuiseries Duchesnes';
grille['REF'] := 'AB123';
grille['DATE'] := '23/07/2007';
grille['MONTANT'] := '300';

grille.Append;
grille.RowCommaText := '"Transports Dubois",0030,24/07/2007,200';

// On indique qu'on souhaite que la colonne n°2 soit la première dans l'extraction
grille.ColumnRank[2]:=0;
// On enregistre les données dans un fichier CSV
SaveStringToTextFile('C:\Temp\MonFichier.csv', grille.AsCSV);

Voici un exemple avancé d'utilisation d'une instance de TDataGrid
Avant de regarder ce programme, assurez-vous de bien comprendre les notions de type ainsi que les fonctions FloatToStr et StrToFloat.

var grille := new TDataGrid;

// initialisation et remplissage à partir d'un CSV
grille.LoadFromCSV(#'NOM,REF,DATE,MONTANT
                     "Transports Dubois",0028,23/07/2007,1500
                     "Menuiseries Duchesnes",AB123,23/07/2007,300
                     "Transports Dubois",0030,24/07/2007,200'
,
                   ',', '"');

// on trie les noms par ordre alphabétique décroissant,
// puis par ordre de montant décroissant
grille.Sort('MONTANT', csdDescending);
grille.Sort('NOM', csdAscending);

// on majore toutes les commandes des Transports Dubois de 10%
grille.First;
while grille.Find('NOM', 'Transports Dubois') do begin
   grille.CellData[3] := FloatToStr( StrToFloat(grille.CellData[3]) * 1.1 );
   grille.Next;
end;

// affichage du résultat
grille.First;
while not grille.EOF do begin
   InformationDlg(grille.RowCommaText);
   grille.Next;
end;

En Qubes 6.2, voici un exemple de définition de DataGrid qui utilise un type énuméré pour faire un code performant qui gère les erreurs à la compilation et qui reste lisible :

type DGColumns = enum(Col1, Col2, Col3);

// Ajout des colonnes
var dg := TDataGrid.Create;
for var colIdx in DGColumns do
   dg.AddColumn(colIdx.Name, cssNone);

// Ajout de champs par index
dg.Append;
dg.CellData[DGColumns.Col1] := 'toto';
dg.CellData[DGColumns.Col2] := 'tata';
dg.CellData[DGColumns.Col3] := 'titi';

PrintLn(dg.AsCSV);