![]() |
Jaaaaa, for Schleifen sind schon schwer...
Hallöchen,
mich macht eine einfache Schleife ziemlich fertig.
Code:
So, damit nummeriere ich die Einträge neu. Der erste Eintrag erhält die 0 und der letzte die höchste Nummer. Sollte aber anders rum sein. Also der erste Eintrag die höchste und der letzte die 0.
procedure TForm1.Button3Click(Sender: TObject);
//Markierten Eintrag löschen var i: integer; begin ListView1.DeleteSelected; for i := 0 to ListView1.Items.Count -1 do begin ListView1.Items.Add; ListView1.Items.Item[i].Caption := IntToStr(i); end; end; Wenn ich for i := ListView1.Items.Count -1 to 0 do schreibe, funktioniert das ganze nicht. Es wird nichts neu durchnummeriert. Was mach ich den falsch? Vielen Dank. Grüsse, Daniel :hi: |
Moin Daniel B,
Warum machst Du davor eigentlich immer ein ListView1.Items.Add? Damit verdoppelst Du doch die Anzahl der Items. So sollte es gehen:
Code:
[b]procedure[/b] TForm1.Button3Click(Sender: TObject);
[color=#000080]//Markierten Eintrag löschen[/color] [b]var[/b] i: integer; iCount : integer; [b]begin[/b] ListView1.DeleteSelected; iCount := ListView1.Items.Count; [b]for[/b] i := 0 [b]to[/b] ListView1.Items.Count -1 [b]do[/b] [b]begin[/b] ListView1.Items.Item[i].Caption := IntToStr(iCount-i); [b]end[/b]; [b]end[/b]; |
iCount könnt ihr euch sparen. Laßt die for-Schleife doch mit downto rückwärts laufen.
|
Zitat:
wer sagt den sowas? Ich erstelle dadurch ncihts doppelt. Nur die durchnummerierung fängt oben an anstatt unten. Sonst funktioniert es ja im "prinzip". GRüsse, Daniel :hi: Nachtrag: Damit geht es wunderbar. Danke Dir. :bounce2: |
Zitat:
das hatte ich bereits versucht. Dennoch ist die 0 oben und die höchste Zahl unten. Übrigens, wenn ich es damit mache, muss ich wirklich das LV.Items.Add rausschmeissen, sonst werden da leere Einträge éingefügt. Grüsse, Daniel :hi: |
Zitat:
Code:
bzw.
with ListView1,Items do
for i := 0 to Count - 1 do Item[i].Caption := inttostr(Count - i);
Code:
für die Null-basierte Nummerierung.
Item[i].Caption := inttostr(pred(Count) - i);
Zitat:
Zitat:
Zitat:
Zitat:
|
Hi!
Du willst die Nummerierung umkehren? Also musst du beim durchgehen der Elemente dem letzten Element den ersten Wert geben, dem vorletzten Element den zweiten Wert usw.
Code:
Cu,
ListView1.Items.Item[ListView1.Items.Count-1-i].Caption := IntToStr(i);
Udontknow BTW: Add hat bei der Durchnummerierung garantiert nichts zu suchen... |
Moin Zusammen,
stimmt natürlich, dass das iCount überflüssig ist. Dieses "Relikt" stammt noch aus der Version mit .ADD in der Schleife, dann funktionierts nämlich nicht mit Items.Count ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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