AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Listbox item löschen und nächstes selektieren
Thema durchsuchen
Ansicht
Themen-Optionen

Listbox item löschen und nächstes selektieren

Ein Thema von JanWe · begonnen am 17. Mai 2023 · letzter Beitrag vom 18. Mai 2023
 
Benutzerbild von JanWe
JanWe

Registriert seit: 23. Mär 2015
Ort: NRW
78 Beiträge
 
Delphi 7 Personal
 
#1

Listbox item löschen und nächstes selektieren

  Alt 17. Mai 2023, 23:46
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
Angehängte Grafiken
Dateityp: jpg sel.jpg (19,5 KB, 22x aufgerufen)
Jan
Allen demnächst ein gutes 2023!
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz