[D7] tlistview ajouter un item
Bonjour,
J'ai un problème de base et j'en perd mon latin.
J'ai un tlistview, je crée dynamiquement 4 colonnes et je charge 3 items dans ma liste. Cette opération se fait dans une fonction qui se contente d'un clear des items puis de faire les add nécessaire.
Cela fonctionne très bien la première fois cependant, la seconde fois, ma liste contient deux fois mes items comme si mon clear n'avait pas été pris en compte. J'ai essayer les updates, les deux types de clear, les différentes méthodes add et même un insert(0) mais rien n'y fait.
Au désespoir, j'ai cherché sur le net, voir un patch pour delphi 7 que je n'ai pas trouvé.
J'en appel aux forces vives du forum. Quelqu'un peut il m'aider ?
Merci.
mon code pour mieux comprendre
Bonjour,
Voici mon code :
procedure TFrame_ListURL.LoadList(Nom: String);
var
fichier : String;
TS : TStringList;
TS2 : TStringList;
Idx, Idx2 : Integer;
New : TListItem;
Newc : TListColumn;
bool : Boolean;
begin // Appel du chargement du fichier de donnée correspondant
bool := True;
fichier := TUtil.Instance().Transforme_Fichier(Nom);
If Not FileExists(fichier) Then
Exit;
TS := TStringList.Create;
TS2 := TStringList.Create;
TS.LoadFromFile(fichier);
For Idx := 0 To TS.Count - 1 Do
Begin
TS2.Text := StringReplace(TS[Idx], ';', #13#10, [rfReplaceAll]);
If Idx = 0 Then
Begin
// Chargement de l'entête
ListURL.Columns.Clear;
For Idx2 := 0 To TS2.Count - 1 Do
Begin
Newc := ListURL.Columns.Add;
Newc.Caption := Copy(TS2[Idx2], 0, Pos(':', TS2[Idx2]) - 1 );
Newc.Tag := TUtil.Instance().TypeStrToInt( Copy(TS2[Idx2], Pos(':', TS2[Idx2]) + 1, Length(TS2[Idx2])) );
Newc.Width := TUtil.Instance().TypeIntToWidth(Newc.Tag);
End;
End Else Begin
// Chargement des données
if bool then
begin
While ListURL.Items.Count > 0 Do
Begin
ListURL.Items[0].Delete;
Sleep(10);
End;
//ListURL.Items.Clear;
bool := false;
end;
New := TListItem.Create(ListURL.Items); //ListURL.Items.Add;
ListURL.Items.AddItem(New);
For Idx2 := 0 To TS2.Count - 1 Do
Begin
If Idx2 = 0 Then
New.Caption := TS2[Idx2]
Else
New.SubItems.Add(TS2[Idx2]);
End;
End;
End;
TS.Free;
TS2.Free;
end;
Comme on peut le voir, j'ai essayer également avec du delete plutôt que du clear mais sans plus de succès.