![]() |
Listview.Items.Insert ?
Hallo Leute,
Ich moechte meiner Listview von oben ab mit Neuen Eintragen fuellen. Habe aber leider kein Plan wie ich das hinkriegen soll. Habe schon etwas rumgeguckt hier im Forum aber irgendwie komm ich nicht weiter.
Delphi-Quellcode:
Kann mir da einer bitte weiterhelfen?
for o := 0 to w.Count -1 do
begin listview.Items.BeginUpdate; x.Insert(0, w.Strings[o]); z := CreateStrings(SimpleRSS.Items.Items[o].Description); listitem := listview.Items.Insert[o]; <---------- Muesste richtig sein? ////////////////////Neu Eintraege/////////////////////////////// listitem.Caption := IntToStr(Succ(o)); z.Values['Added'] := Parse(' ', z.Values['Added'], 1); listitem.SubItems.Add(z.Values['Added']); listitem.SubItems.Add(z.Values['Category']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Title); listitem.SubItems.Add(z.Values['Size']); listitem.SubItems.Add(z.Values['Status']); listitem.SubItems.Add(z.Values['Speed']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Link); listitem.SubItems.Add(z.Values['Download']); /////////////////////////////////////////////////////////////// Neu.Caption := 'Anzahl NEUE Items: ' + IntTostr(w.count); z.Free; listview.Items.EndUpdate; end; Besten Dank im voraus. |
Re: Listview.Items.Insert ?
Du musst Insert(0, ...) verwenden, da du die neuen Einträge ja immer ganz oben haben willst. Deine Loopvariable o erhöht sich ja mit jedem durchlauf.
Dein Label solltest du nach dem Durchlauf aktualisieren. Bei jedem Aufruf wäre sinnlos, es sein denn du willst, dass er hochzählt. Dann könntest du noch ein Application.ProcessMessages einbauen. |
Re: Listview.Items.Insert ?
Hi dahead und wie uebergebe ich dan
Delphi-Quellcode:
an Insert(0,...)?
////////////////////Neu Eintraege///////////////////////////////
listitem.Caption := IntToStr(Succ(o)); z.Values['Added'] := Parse(' ', z.Values['Added'], 1); listitem.SubItems.Add(z.Values['Added']); listitem.SubItems.Add(z.Values['Category']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Title); listitem.SubItems.Add(z.Values['Size']); listitem.SubItems.Add(z.Values['Status']); listitem.SubItems.Add(z.Values['Speed']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Link); listitem.SubItems.Add(z.Values['Download']); /////////////////////////////////////////////////////////////// Etwa so?
Delphi-Quellcode:
Das habe ich naemlich schon versucht und bekam nen Listindex out of bounds.
listitem.SubItems.Insert(0, z.Values['Added']);
listitem.SubItems.Insert(0, z.Values['Category']); listitem.SubItems.Insert(0, SimpleRSS.Items.Items[o].Title); .... |
Re: Listview.Items.Insert ?
nein, du machst das wie folgt:
Delphi-Quellcode:
mit LI gibst du der ListView ja den Listeneintrag. Diesen fügst du via Insert(0) nach ganz oben. Die restlichen Eigenschaften (also Texte der Spalten) weist du einfach mit SubItems.Add('Test') zu.
var
LI: TListItem; begin LI := ListView1.Items.Insert(0); LI.Caption := 'Neuer Eintrag'; LI.SubItems.Add('Spalte 1'); LI.SubItems.Add('Spalte 2'); ... end; edit: ich hab mir mal deinen o. g. quelltext angesehen. es müsste etwa (etwa, da ich nicht weiß, was die variable w ist) so aussehen:
Delphi-Quellcode:
var
LI: TListItem; O: Integer; begin ListView.Items.BeginUpdate; // wichtig: vor schleifendurchlauf, da sonst mit jedem neuen eintrag aufgerufen wird. for o := 0 to w.Count -1 do begin x.Insert(0, w.Strings[o]); //keine ahnung was x ist. z := CreateStrings(SimpleRSS.Items.Items[o].Description); //schätze hier liest du die strings aus listitem := listview.Items.Insert(0); //neuen listview eintrag ganz oben erstellen listitem.Caption := IntToStr(Succ(o)); // caption zuweisen z.Values['Added'] := Parse(' ', z.Values['Added'], 1); //auch keine ahnung // subitems erstellen listitem.SubItems.Add(z.Values['Added']); listitem.SubItems.Add(z.Values['Category']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Title); listitem.SubItems.Add(z.Values['Size']); listitem.SubItems.Add(z.Values['Status']); listitem.SubItems.Add(z.Values['Speed']); listitem.SubItems.Add(SimpleRSS.Items.Items[o].Link); listitem.SubItems.Add(z.Values['Download']); end; Neu.Caption := 'Anzahl NEUE Items: ' + IntTostr(w.count); // am ende der schleife, bzw. danach das label akt. z.Free; //keine anhnung, könnte auch noch am ende der schleife freigegeben werden, ich weiß nicht wann du das erstellst. listview.Items.EndUpdate; //und hier definitiv nach durchlauf der schleife das endupdate einläuten. |
Re: Listview.Items.Insert ?
Jetzt klappt es Vielen Dank dahead. :-D
|
Re: Listview.Items.Insert ?
bitte, kein problem.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz