![]() |
TListBox ItemIndex aktueller Ansicht
Hallo,
ich verwende eine ListBox, der dynamisch Strings hinzugefügt werden. Hierbei resultieren 2 Problemchen: 1. Es ist ja ziemlich einfach, mittels ItemIndex die "Zeilennummer" einer selektierten Zeile zu bestimmen, doch wie bekomme ich den ItemIndex z.B. des obersten Elements einer beliebigen ListBox-Ansicht (meinetwegen 500 Einträge, Liste quasi in die Mitte gescrollt), heraus, wenn gar nichts selektiert wurde? 2. Wenn Items einer ListBox hinzugefügt werden, wird automatisch die Liste aktualisiert und die Ansicht auf das erste Element gesetzt. Mit TopIndex kann ich mittels Items.Count-1 auch auf die aktuellste Position fokussieren, doch was ist, wenn ich die Ansicht quasi 'einfrieren' will, d.h. weiter "unten" werden zwar Einträge hinzugefügt, meine (gescrollte) Ansicht bleibt jedoch unbeeindruckt davon. Normalerweise würde nen Property reichen, falls ichs übersehen hab' - bitte steinigt mich nicht ;-) Auf Antwort hoffend Gruß! Deerfield |
Re: TListBox ItemIndex aktueller Ansicht
Herzlich willkommen in der Delphi-PRAXiS, Deerfield.
In einfachen Fällen hilft schon dieses:
Delphi-Quellcode:
Etwas komplizierter wird es bei MultiSelect = True, AddStrings() oder Insert().
procedure AddItem(lb: TListBox; const item: String);
var iSel, iTop: Integer; begin with lb do begin Items.BeginUpdate; iSel := ItemIndex; iTop := TopIndex; Items.Add('abc'); if iSel >= 0 then begin TopIndex := iTop; ItemIndex := iSel; end; Items.EndUpdate; end; end; procedure TDemoForm.AddButtonClick(Sender: TObject); begin AddItem(ListBox, ItemEdit.Text); end; Freundliche Grüße vom marabu |
Re: TListBox ItemIndex aktueller Ansicht
Ich bedanke mich vielmals! Mein Problem ist damit gelöst :-)
LG Deerfield |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:26 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