![]() |
Hi,
Caption ist die erste Spalte, die anderen werden mit SubItems[i] bezeichnet. 0 Wäre die zweite, 1 die dritte usw. Beim Einfügen von Items, könntest Du noch ein zusätzliches Item einfügen und zwar mit dem ListView.Items.Count -1, somit hättest DU auch gleich einen Index, womit Du dann auf ein Array zugreifen kannst. Grüsse, Daniel :hi: |
Zitat:
|
Danke!
ich habs jetzt so weit mal hinbekommen!
das aktuell markierte lese ich mit itemindex aus! funktioniert mal recht gut, problem hab ich dann nachher aber, wenn ich ein item lösche oder eins dazu füge: dann muss ich die ganzen captions ändern und außerdem noch den array neu sortieren! ich hoffe mal das braucht nicht zu viel rechenleistung :? wirklich vielen dank, habt mir alles ehr geholfen!!! |
Moin iaby,
Zitat:
Delphi-Quellcode:
an.
ListView1.Items.Delete(...);
|
das schon, aber ich habe ja in der ersten spalte die position durchnummerriert. außerdem muss ich den array neu sortieren :-(
|
Moin iaby,
stimmt natürlich. Wenn Du berücksichtigst, dass bis zur Stelle an der eingefügt/gelöscht wird, sich nichts an der Nummerierung geändert haben kann, also nur noch ab dieser Stelle Änderungen durchgeführt werden müssen, sparst Du schon mal Zeit. Wenn Du beim Einfügen die Zeilen gleich an der richtigen Stelle einfügst, sparst Du Dir auch das Sortieren. |
Zitat:
|
Hallöle,
ListView.DeleteSelected; ist Dir hoffentlich schon in die Finger gekommen. Hier ist mal ein Prozedur von mir, wie man den Inhalt im Array nachrutscht. Du musst nur wissen, bevor Du was nachrutsch, welche Einträge Du gelöscht hast.
Delphi-Quellcode:
Anschliessend musst Du nur noch den Inhalt des Arrays entweder neu in die LV eintragen, oder Du lässt es bleiben. Mit der Geschwindigkeit wirst Du da keine Probleme, behaupte ich jetzt einfach mal, also ich merke bei 200 Einträgen, jeder mit 6 SubItems überhaupt nichts.
procedure TMainFormMC2004.ButtonKKLokLoeschenClick(Sender: TObject);
//Markierte einträge aus der Liste entfernen -> KK Lok var i, n, t: integer; begin if ListViewKKLok.SelCount = 1 then //Nur wenn ein Eintrag ausgewählt ist begin i := StrToInt(ListViewKKLok.Selected.SubItems[5]); for n := i +1 to MC2004.MenueInit.LokAnzahl -1 do //Array nachrücken begin MC2004.MenueInit.LokStamm[n -1] := MC2004.MenueInit.LokStamm[n]; end; MC2004.MenueInit.LokAnzahl := MC2004.MenueInit.LokAnzahl -1; //Array kürzen for t := 0 to ListViewKKLok.Items.Count -1 do //Restliche Indexe -1 begin if StrToInt(ListViewKKLok.Items.Item[t].SubItems[5]) > i then begin ListViewKKLok.Items.Item[t].SubItems[5] := IntToStr(StrToInt( ListViewKKLok.Items.Item[t].SubItems[5]) -1); end; end; end; LVLokFuellen; EditKKLokID.Clear; EditKKLokName.Clear; EditKKLokAdresse.Clear; EditKKLokTraeg.Clear; EditKKLokBeschl.Clear; EditKKLokVerzoeg.Clear; EditKKLokID.SetFocus; Check; end; Grüsse, Daniel :hi: |
danke, sehr hilfreich deine procedure!!!
werd das dann mal einbauen, und auch mal testen! Zitat:
kann man irgendwie verhindern, dass man die spalten der listview vergrößern kann? ich hab mal maxwidth und minwidth auf 50 gestellt, aber verschieben kann man die immer noch, nur springen sie dann auf den ursprung wieder zurück! ist aber nur eine kleinigkeit, nicht so schlimm :wink: Iaby |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:04 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