Hi!
Man aktiviert den virtuellen Modus bei einer TListView indem man Owner
Data aktiviert. Anschließend muss man den Count setzen und OnData verwenden. Ich habe es so gemacht:
Delphi-Quellcode:
constructor TRazFileManager.Create(aForm : TForm; aSep : String; aViewStyle : TViewStyle);
begin
LV := TListView.Create(Form);
with LV do
begin
OwnerData := True;
[...]
end;
end;
procedure TRazFileManager.Liste(Directory : String; Recursive, ClearList : Boolean);
begin
[...]
LV.Items.Count := Succ(Length(DirsFiles));
end;
procedure TRazFileManager.LVData(Sender: TObject; Item: TListItem);
begin
if Pred(Item.Index) > -1 then
Item.Caption := DirsFiles[Pred(Item.Index)].Name+' < '+IntToStr(Item.Index);
end;
Die Prozedur Liste befüllt die ListView udn setzt daher am Ende den Count. So wie ich es mache, ist der erste Item.Index -1. Daraus folgt eine sofortige Zugriffsverletzung. Daher die If-Abfrage. Diese If-Abfrage möchte ich vermeiden, denn dank ihr ist der erste Eintrag leer. Alle Einträge sind um eins nach hinten verschoben. Habt ihr einen Tipp, was ich dafür tun muss ?