Guten Abend,
Listbox/ Listen - einfachste Sache ...
eigentlich.
Dachte ich auch.
Ich habe eine Liste mit Items (Überschriften), die mit einer Liste mit Texten verknüpft ist, d.h. ich selektiere in der Liste und der VollText wird im Memo angezeigt.
Ich möchte aus der Listbox ein (blau) ausgewähltes Item löschen und gleich das z.B. darüberliegende (oder darunter) (wo der schwarze Rahmen dann nach dem Löschen schon draufzeigt, welcher aber noch nicht blau selektiert ist), selektieren und den dazugehörigen Text anzeigen.
Am Anfang, nach Programmstart und Listenfüllung ist das erste Item blau markiert. LB-Itemindex:= 0;
In der Keydown = Entf-Tasten-Procedur steht:
Delphi-Quellcode:
procedure TForm1.ListBox1KeyDown(Sender: TObject; var Key: Word;
var e : integer;
begin
e := ListBox1.ItemIndex;
ListBox1.items.Delete(e);
sl.delete (e); // Element aus Volltext-Liste del
listbox1.ItemIndex := (e); // neues Setzen der Selektion
if e > 1 memo1.text := sl[e-1]; // anzeigen des Volltextes
listbox1.SetFocus;
end;
Wenn ich einfach nur lösche (Entf drücke) wird immer die oberste gelöscht. Der blaue Balken bleibt stets beim Obersten.
(die Volltextanzeige arbeitet dann auch korrekt.)
Wenn ich nun das letzten Item blau selektiere (Taste Pagedown in der Liste) und dann lösche,
wird er gelöscht, der schwarze Rahmen markiert nun das letzte, also ehemals darüberliegende item. Blau hinterlegt ist es aber nicht.
Drücke ich erneut ENTF wird er letzte Eintrag gelöscht, doch der schwarze Rahmen markiert nun das oberste Item.
Bei erneutem ENTF-Drücken werden fortan nur noch die obersten Items gelöscht. (warum nicht dort, wo der Itemindex vorher stand?)
(ich hoffe, ich hab das alles nachvollziehbar beschrieben).
Was mach ich denn falsch?
Wieso springt der auf das Item[0]
und wieso selektiert er das neue Item nicht mit dem blauen Balken?
(Übrigens stimmt nach dem Löschen die passende memo-Anzeige nur, wenn das oberste selektiert und gelöscht wird. - da müßte auch synchron)
Kann jemand nachvollziehen, wo es bei mir hakt?
Kurz: Also ich möchte einfach Items löschen und direkt den passenden Volltext synchron zum Item angezeigt bekomment und das nächstliegende Item blau markiert haben. So dacht ich mir das.
Wo liegt denn mein Denkfehler bei Listen und Listboxen?
Danke schonmal