Sign in Join
Wiki copytemporary

TStringGrid/fr: what changed

Revision 1 to 2. Removed lines have a minus sign; added lines have a plus sign.

OldNewLine
11**TStringGrid** ![](/wiki-images/6/67/Tstringgrid.png) fournit un affichage tabulaire de données textuelles qui peuvent aussi être éditées. .
22
33# Exemple de programme avec StringGrid
44
55Pour cet exemple, créez un nouveau projet dans Lazarus. Sélectionnez un TStringGrid à ajouter sur votre fiche, en cliquant sur l'icône du TStringGrid dans la palette de composants puis cliquez sur la fiche. Dans notre cas, deux [[TButton/fr|TButton]] sont aussi sélectionnés et placés sur la fiche. Il faut aussi poser un [[TOpenDialog/fr|TOpenDialog]] sur la fiche.
66
77![](/wiki-images/7/7c/TStringGrid02.png)
88
99# Ajustement de colonnes & modification de leurs propriétés
1010
1111Des colonnes peuvent être facilement ajoutées en cliquant-droit sur 'Columns: TGridColumns' :
1212
1313![](/wiki-images/f/f0/TStringGrid09.png)
1414
1515En sélectionnant AddItem, une nouvelle colonne est montrée en dessous. Sous l'onglet Propriétés de l'inspecteur d'objet, une nouvelle liste de propriétés et d'événements associés à cette colonne est alors montrée. A partir de là, les noms des colonnes sont définies ainsi que la largeur. Une fois terminé, le TreeView ressemble à cela :
1616
1717![](/wiki-images/3/39/TStringGrid10.png)
1818
1919Dans cet exemple, le nom de Button1 a été changé en ButtonAddFiles et celui de Button2 en ButtonExit. Le StringGrid1 a été étiré et les boutons ont été aligné comme montré. Remarquez qu'il y a une ligne et une colonne qui sont d'une couleur différente. L'état illustre le concept que cette colonne et cette ligne peuvent être des titres sur leurs colonne et ligne respectives. Bien sûr cet état par défaut peut être modifié en changeant simplement les propriétés 'FixedCols' ou 'FixedRows' dans l'inspecteur d'objet.
2020
2121![](/wiki-images/d/de/TStringGrid03.png)
2222
2323Vous pouvez voir dans ce cas que les lignes de titre ont été changées et que le composant StringGrid1 a été ancré. Cela a été réalisé en deux étapes. La première consiste à regarder l'inspecteur d'objet et à sélectionner diverses propriétés au besoin. Une étape qui devrait être prise lors du démarrage consiste à noter attentivement les propriétés par défaut. Lorsque vous avez effectué de nombreux changements et que vous avez besoin de revenir en arrière, il est beaucoup plus facile de savoir ce que leur état a été lorsque vous avez commencé ou à différents moments en cours de route. L'état de ces propriétés dans la dernière image ne représente qu'une seule ligne fixe avec des titres de colonne. Cet état illustre :
2424
25-`                 FixedCols[0], `\
26-`                 FixedRows[1], `\
27-`                 HeaderHotZones[gzFixedCols], `\
28-`                 HeaderPushZones[gzFixedCols], `\
29-`                 Options[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goSmoothScroll], `\
30-`                 TitleFont[Color[clPurple]], `\
31-`                 Style[fsBold], and `\
32-`                 RowCount = 1. `
25+```text
26+ FixedCols[0],
27+ FixedRows[1],
28+ HeaderHotZones[gzFixedCols],
29+ HeaderPushZones[gzFixedCols],
30+ Options[goFixedVertLine,goFixedHorzLine,goVertLine,goHorzLine,goRangeSelect,goSmoothScroll],
31+ TitleFont[Color[clPurple]],
32+ Style[fsBold], and
33+ RowCount = 1.
34+```
3335
3436Après avoir visionné votre travail en cliquant sur le bouton Exécuter dans Lazarus, vous pourriez avoir besoin de modifier ces propriétés. Dans ce cas, les propriétés supplémentaires de ColClickSorts et AlternateColor ont été sélectionnées.
3537
3638La seconde chose qui peut être faite est d'utiliser l'éditeur d'ancre (Voir--\>Editeur d'ancre) pour attacher les côtés du StringGrid à la fiche principale.
3739
3840# Utilisation des propriétés prédéfinies disponibles
3941
4042En bas de l'inspecteur d'objet, vous pouvez trouver de l'information utile sur les propriétés montrées comme vu dans l'exemple :
4143
4244![](/wiki-images/e/ea/TStringGrid04.png)
4345
4446Pour ajouter de l'information au composant StringGrid1,il est nécessaire soit d'ajouter de la donnée depuis un flux TStream, LoadCVSFile, soit de lier la grille à une base de données soit d'autres artions similaires. S'il y a liaison à une base de donnée, il y a d'autres composants composants à retenir tels que TDBGrid. D'autres composants tels que TOpenDialog peuvent aussi vous aider à utiliser des méthodes comme LoadCVSFile. Dans plusieurs cas, il est nécessaire de lier directement les données à des cellules données ou à des rangées. Dans notre exemple, nous utiliserons la méthode InsertRowWithValues. Il est maintenant nécessaire d'ajouter au bouton ButtonAddFiles un gestionnaire à l'événement *OnClick* en passant par l'onglet Evénements de l'inspecteur d'objet.
4547
4648![](/wiki-images/f/f0/TStringGrid05.png)
4749
4850# Bloc de programme pour ajouter de la donnée dans le StringGrid
4951
5052En double-cliquant sur le OnClick, l'éditeur de source devrait ajouter un bloc de code pour la procédure ButtonAddFilesClick. Dans laquelle vous devrez ajouter le code suivant :
5153
5254``` pascal
5355 uses
5456 Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
5557 Grids, LazFileUtils, LazUtf8;
5658 . . . .
5759 types
5860 { TForm1 }
5961 TForm1 = class(TForm)
6062 ButtonAddFiles : TButton;
6163 . . . .
6264 procedure ButtonAddFilesClick(Sender : TObject);
6365 procedure ButtonExitClick(Sender : TObject);
6466 . . . .
6567 var
6668 Form1 : TForm1;
6769 implementation
6870 {$R *.lfm}
6971 { TForm1 }
7072 procedure TForm1.ButtonExitClick(Sender : TObject);
7173 begin
7274 Close;
7375 end;
7476 .
7577 procedure TForm1.ButtonAddFilesClick(Sender : TObject);
7678 var
7779 FilePathName : string;
7880 begin
7981 if OpenDialog1.Execute then
8082 FilePathName := OpenDialog1.Filename;
8183 AddFilesToList(FilePathName);
8284 end;
8385```
8486
8587La procédure pour la fermeture de l'application est montrée pour la complétude. Dans la procédure ButtonAddFilesClick, nous utilisons maintenant le OpenDialog1 et sélectionnons la méthode Execute. Si l'appel à Execute réussi (choix d'un fichier et confirmation par l'utilisateur), la propriété OpenDialog1.FileName est copiée dans notre variable 'FilePathName'.
8688
8789Dans la dernière ligne de la procédure, il apparaît une nouvelle procédure 'AddFilesToList' que nous devons créer. Dans la partie 'private' ou 'public' de la classe TForm1, nous devons déclarer celle-ci. Dans l'implémentation, le bloc de code est créé. Dans cet exemple, nous allons utiliser les fichiers d'un DVD comme cela peut être vu dans l'illustration :
8890
8991![](/wiki-images/d/dc/TStringGrid06.png)
9092
9193Nous voulons que ces fichiers soient listés sur StringGrid1.
9294
9395``` pascal
9496 Type
9597 . . . .
9698 private
9799 procedure AddFilesToList(FilePathName : String);
98100 . . . .
99101 procedure TForm1.AddFilesToList(FilePathName : String);
100102 var
101103 D, R, K : integer;
102104 FileName, FilePath : string;
103105 SearchRec1, SearchRec2 : TSearchRec;
104106 FileListVideo, FileListVst : TStringList;
105107 begin
106108 FileListVideo := TStringList.Create;
107109 FileListVst := TStringList.Create;
108110 FileName := ExtractFileName(FilePathName);
109111 FilePath := ExtractFilePath(FilePathName);
110112 FileListVideo := FindAllFiles(FilePath,'VIDEO_TS.*',true, faDirectory);
111113 R := 1;
112114 K := 0;
113115 for D := 0 to FileListVideo.Count -1 do
114116 begin
115117 if FindFirstUtf8(FilePath, faAnyFile and faDirectory, SearchRec1)=0 then
116118 begin
117119 repeat
118120 With SearchRec1 do
119121 begin
120122 FileName := ExtractFileName(FileListVideo.Strings[D]);
121123 K := FileSizeUtf8(FileListVideo.Strings[D]);
122124 StringGrid1.InsertRowWithValues(R,['0', FileName, IntToStr(K)]);
123125 R := R + 1;
124126 end;
125127 until FindNextUtf8(SearchRec1) <> 0;
126128 end;
127129 FindCloseUtf8(SearchRec1);
128130 end;
129131 ...
130132 FileListVst := FindAllFiles(FilePath, 'VTS_*.*', true, faDirectory);
131133 K := 0;
132134 for D := 0 to FileListVst.Count -1 do
133135 begin
134136 if FindFirstUtf8(FilePath, faAnyFile and faDirectory,SearchRec2)=0 then
135137 begin
136138 repeat
137139 With SearchRec2 do
138140 begin
139141 FileName := ExtractFileName(FileListVst.Strings[D]);
140142 K := FileSizeUtf8(FileListVst.Strings[D]);
141143 StringGrid1.InsertRowWithValues(R,['1', FileName, IntToStr(K)]);
142144 R := R + 1;
143145 end;
144146 until FindNextUtf8(SearchRec2) <> 0;
145147 end;
146148 FindCloseUtf8(SearchRec2);
147149 end;
148150 StringGrid1.SortColRow(true, 1,1,StringGrid1.RowCount-1);
149151 FileListVst.Free;
150152 FileListVideo.Free;
151153 end;
152154```
153155
154156Cet exemple utilise les méthodes 'FindAllFiles' de 'FileUtils' et 'FindFirstUtf8', 'FindNextUtf8' et 'FindCloseUtf8' de 'LazFileUtils'.
155157
156158# Colonne avec CheckBox
157159
158160Une caractéristique qui peut être utile dans des applications du TStringGrid est d'avoir des colonnes avec des cases à cocher (*CheckBox*) soit pour que l'utilisateur puisse définir une sélection soit pour montrer un certain état d'une propriété. L'ajout de ce type de colonne est illustré dans ce code. Dans la méthode 'InsertRowWithValues', la première colonne a un '0' affiché dans la première partie du code quand les fichiers contenant 'VIDEO_TS*' sont sélectionnés. Le '0' illustre l'état booléen de la case à cocher avec 1 ppour l'état coché et 0 pour son opposé. En sélectionnant depuis l'inspecteur d'objet sous StringGrid1--\>Columns: TGridColumns--\>0-Select dans la vue arborescente (*TreeView*), les ValueChecked et ValueUnchecked sont montrées. Vous pouvez utiliser d'autres nombres, ou avoir ajouté du code pour modifier l'état.
159161
160162# Méthode InsertRowWithValues
161163
162164Dasn cet exemple, la méthode InsertRowWithValues est utilisée pour ajouter de la donnée à notre composant StringGrid1. Chaque donnée de colonne est entrée suivie d'une virgule. Il peut être nécessaire d'utiliser des fonctions de conversion de type (*typecasting*) pour obtenir les données sous forme de texte. Les variables peuvent être référencée ou simplement montrée comme du texte tel que '0' et '1' le sont pour la colonne CheckBox.
163165
164166![](/wiki-images/d/d3/TStringGrid08.png)
165167
166168Lors de l'exécution de notre nouvelle application et en cliquant sur le bouton 'AddFiles', une boîte de dialogue s'ouvre nous permettant de sélectionner les fichiers à ajouter. Si vous cliquez sur un en-tête de colonne, StringGrid1 est trié dans la direction indiquée par la flèche verte. Le résultat doit être comme indiqué dans l'illustration suivante:
167169
168170![](/wiki-images/e/e4/TStringGrid07.png)
169171
170172Selon vos besoins, d'autres propriétés peuvent être sélectionnées pour permettre l'édition, le redimensionnement des colonnes, etc.
171173
172174# Voir aussi
173175
174176- [[TDrawGrid/fr|TDrawGrid]]
175177- [[TDBGrid/fr|TDBGrid]]
176178- [[Grids Reference Page/fr|Page de référence sur les grilles.]]
177179
178180---
179181*From the Free Pascal wiki, page "TStringGrid/fr", as it stood on 2020-03-02 after a change by Trev, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).*

Back to history