Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - ListBox ItemIndex
Jacer - Sa 17.02.07 16:07
Titel: ListBox ItemIndex
Also ich habe (wie ihr vielleicht schon hier mitbekommen habt :D) ein kleines Mitarbeiter-Verwaltungsprogramm geschrieben.
Dabei existiert ein Hauptfenster mit einer ListBox und zwei weitere Formulare für das Editieren und das Anlegen eines neuen Mitarbeiters.
Wenn ich jetzt beispielsweise dass Formular Editieren aufrufe, und auf Bestätigen gehe, aktualisiere ich die ListBox mit folgenden Zeilen:
Delphi-Quelltext
1: 2: 3: 4: 5:
| while not FrmMitarbeiter.TblMitarbeiter.eof do begin FrmMitarbeiter.ListBoxMitarbeiter.Items.Add(FrmMitarbeiter.TblMitarbeiter.FieldbyName('Nachname').Asstring + ', ' + FrmMitarbeiter.TblMitarbeiter.fieldbyname('Vorname').Asstring); FrmMitarbeiter.TblMitarbeiter.Next; end; |
Mein Problem ist, dass dabei die ListBox ihre Selektion von vor dem Aufruf des zweiten Formulars verliert.
Kann man die Selektion bzw den ItemIndex einer ListBox irgendwie zwischenspeichern um ihn nach der Aktualisierung wieder zu aktivieren?
HelgeLange - Sa 17.02.07 16:10
ja, kann man, über den ItemIndex.
Narses - Sa 17.02.07 16:11
Moin!
Die VCL-Kompo TLisBox kann das nicht von Hause aus; mußt du schon selbst machen. ;)
cu
Narses
Jacer - Sa 17.02.07 16:14
HelgeLange hat folgendes geschrieben: |
ja, kann man, über den ItemIndex. |
Tut mir Leid aber die Antwort ist so präzise dass ich sie nicht mehr verstehe!
Narses hat folgendes geschrieben: |
Moin!
Die VCL-Kompo TLisBox kann das nicht von Hause aus; mußt du schon selbst machen. ;)
cu
Narses |
Könntest du mir einen Denkanstoss geben? :)
HelgeLange - Sa 17.02.07 16:15
Delphi-Quelltext
1: 2: 3: 4: 5:
| OldIdx := ListView.ItemIndex ... ... ... ListView.ItemIndex := OldIdx; |
Narses - Sa 17.02.07 16:15
Moin!
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7:
| var Temp: Integer;
begin Temp := ListBox1.ItemIndex; ListBox1.ItemIndex := Temp; |
:rofl:
cu
Narses
GTA-Place - Sa 17.02.07 16:16
Aber prüfe, ob ListBox.ItemIndex > -1, sonst kommt es eventuell zu Zugriffsverletzungen!
HelgeLange - Sa 17.02.07 16:18
Kann man ItemIndex := -1 nicht setzen als "nein-ich habe nichts selektiert" ? *Helge sich da grad nicht sicher ist*
Jacer - Sa 17.02.07 16:18
Gut dann war nu meine Formulierungen des Befehles falsch.
Ich dachte man müsste es wieder so machen:
Delphi-Quelltext
1:
| variable:= ListBox1.Items[ListBox.ItemIndex]; |
Vielen Dank für die Hilfe!
Narses - Sa 17.02.07 16:19
Moin!
GTA-Place hat folgendes geschrieben: |
Aber prüfe, ob ListBox.ItemIndex > -1, sonst kommt es eventuell zu Zugriffsverletzungen! |
Nein, tut es nicht; -1 hebt die Selektion einfach auf. ;)
cu
Narses
GTA-Place - Sa 17.02.07 16:20
Nicht wenn du ListView.Items[Temp].Selected := True benutzt oder auf das Item zugreifen willst :roll:.
Jacer - Sa 17.02.07 16:31
So funktioniert jetzt alles. Hatte noch einen kleinen Fehler drinn!
Vielen Dank für die Hilfe ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!