Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi TListBox ItemIndex aktueller Ansicht (https://www.delphipraxis.net/69730-tlistbox-itemindex-aktueller-ansicht.html)

Deerfield 19. Mai 2006 10:26


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

marabu 19. Mai 2006 11:51

Re: TListBox ItemIndex aktueller Ansicht
 
Herzlich willkommen in der Delphi-PRAXiS, Deerfield.

In einfachen Fällen hilft schon dieses:

Delphi-Quellcode:
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;
Etwas komplizierter wird es bei MultiSelect = True, AddStrings() oder Insert().

Freundliche Grüße vom marabu

Deerfield 19. Mai 2006 12:10

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 00:49 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