Supprimez TListView sur un formulaire et définissez son style sur vsList. Créez les trois colonnes que vous souhaitez afficher (cliquez avec le bouton droit sur ListView et choisissez Editeur de colonnes dans le menu contextuel).
Ajouter ce qui suit à l'événement FormShow() (ou où vous le souhaitez):
procedure TForm1.FormShow(Sender: TObject);
var
SL: TStringList;
i: Integer;
begin
SL := TStringList.Create;
try
SL.LoadFromFile(YourFileNameHere);
i := 0;
while i < SL.Count do
begin
with ListView1.Items.Add do
begin
Caption := SL[i];
SubItems.Add(SL[i + 1]);
SubItems.Add(SL[i + 2]);
end;
Inc(i, 3);
end;
finally
SL.Free;
end;
end;
Notez que cela suppose que ce que vous cherchez quelque chose comme ceci:
0th member first=XXXXX second=YYYYY
1 first=ZZZZZ second=ZZZZZ
Si ce que vous cherchez est plus comme:
0th member XXXXX YYYYY
1 ZZZZZ ZZZZZ
changer ensuite les SubItems() appelle à quelque chose l ike ceci:
SubItems.Add(Copy(SL[i + 1], Pos('=', SL[i + 1]) + 1, MaxInt);
SubItems.Add(Copy(SL[i + 2], Pos('=', SL[i + 2]) + 1, MaxInt);
Ceci extrait la partie qui suit l'égal (=) signe les deux valeurs de texte de la sous-colonne.
Cela devrait être suffisant pour vous aider à démarrer, je pense.
Notez que Delphi 2010 a un bogue avec TListView lorsque ViewStyle est défini sur vsReport et que vous n'avez défini aucun élément dans l'EDI. Vous obtenez une erreur de lecture de flux lorsque vous essayez et exécutez votre application à cause des éléments non définis. Vous pouvez contourner ce problème en créant un élément fictif avec une valeur non-sens au moment de la conception, et dans votre cas FormShow() ajouter ce qui suit la première ligne exécutable:
ListView1.Items.Clear;
Cela devient passé le point que le DFM est streamé dedans, qui est ce qui déclenche le bug.
EDIT: Après avoir lu les commentaires par OP. Pour sauter des lignes vides:
// To skip entire group if starting line is blank
while i < SL.Count - 1 do
begin
if SL[i] <> '' then
begin
with ListView1.Items.Add do
// just like before
end
Inc(i, 3);
end;
Pour sauter seulement des lignes vides dans les sous-éléments:
while i < SL.Count - 1 do
begin
with ListView1.Items.Add do
begin
Caption := SL[i];
if SL[i + 1] <> '' then
SubItems.Add(SL[i + 1]);
if SL[i + 2] <> '' then
SubItems.Add(SL[i + 2];
end;
Inc(i, 3);
end;
merci pour la réponse monsieur, j'ai besoin exactement comme la ligne 1 Légende: XXXXXXXX sous-élément YYYYY000 ligne 2 Légende: XXXXXX11 sous-élément: YYYY11111 ; ligne 3 ----- (etc), et j'ai essayé avec notre méthode monsieur, et son fonctionnement bien si toutes les données ligne par ligne. Dans mon fichier texte, toutes les données ne sont pas ligne par ligne, parfois j'utilise entrer alors je reçois des champs vides dans listview. Y at-il une chance que je puisse obtenir des données indépendamment du nombre de lignes vides présentes dans le fichier? Merci d'avance . – noob
hmm, Je l'ai eu à travailler monsieur, avec des lignes vides, de toute façon merci pour notre idée monsieur. je suis curieux de savoir que je peux le faire avec str.values? – noob
Pour les espaces, vous pouvez vérifier d'abord avant d'ajouter (voir ma modification).Je ne suis pas sûr de ce que vous voulez dire par "avec des valeurs"? –