Einzelnen Beitrag anzeigen

Nils_13

Registriert seit: 15. Nov 2004
2.647 Beiträge
 
#1

ListView: Virtueller Modus

  Alt 4. Jul 2008, 16:50
Hi!

Man aktiviert den virtuellen Modus bei einer TListView indem man OwnerData 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 ?
  Mit Zitat antworten Zitat