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/)
-   -   ListBox, mittlerer Eintrag immer markiert (https://www.delphipraxis.net/182556-listbox-mittlerer-eintrag-immer-markiert.html)

LokutusvB 31. Okt 2014 11:47

ListBox, mittlerer Eintrag immer markiert
 
Hallo,

gibt es bei einer TListbox die Möglichkeit, den mittleren Eintrag dieser Box immer als den markierten Eintrag darzustellen?

Sprich ich habe eine Listbox, in der immer 3 Einträge sichtbar sind, insgesamt hat sie z.B. 10 Einträge (plus 2 Leereinträge für nichtauswählbare Felder der Box). Nun möchte ich, das der aktuell mittlere Eintrag der Anzeige immer der markierte Eintrag ist, so in etwa wie bei einem Smartphone die Zeiteinstellung.

Ist das mit einer Listbox realisierbar?

Sir Rufo 31. Okt 2014 12:15

AW: ListBox, mittlerer Eintrag immer markiert
 
FMX oder VCL?

LokutusvB 3. Nov 2014 06:57

AW: ListBox, mittlerer Eintrag immer markiert
 
Ups, ganz vergessen, VCL.

Sir Rufo 3. Nov 2014 07:41

AW: ListBox, mittlerer Eintrag immer markiert
 
Kuckst du Doku Delphi-Referenz durchsuchenVcl.StdCtrls.TListBox.TopIndex

LokutusvB 3. Nov 2014 09:42

[Gelöst] AW: ListBox, mittlerer Eintrag immer markiert
 
Daran hatte ich schon gedacht, aber der TopIndex ist ja für gewöhnlich der oberste Eintrag der Box. Aber siehe da, es funktioniert wunderbar.

Als OnGesture-Ereignis (Ausführung auf Tablet):
Code:
ListBox1.Selected[ListBox1.TopIndex + 1] := True;

Sir Rufo 3. Nov 2014 10:02

AW: ListBox, mittlerer Eintrag immer markiert
 
Wenn du allerdings Delphi-Referenz durchsuchenVcl.StdCtrls.TListBox.MultiSelect gesetzt hast, dann geht das in die Hose.

Besser so
Delphi-Quellcode:
begin
  ListBox1.ItemIndex := ListBox1.TopIndex + 1;
end;

LokutusvB 3. Nov 2014 10:06

AW: ListBox, mittlerer Eintrag immer markiert
 
Danke für den Tip. :) Nein, MultiSelect steht auf False, es darf nur ein Eintrag gewählt werden.

himitsu 3. Nov 2014 10:13

AW: ListBox, mittlerer Eintrag immer markiert
 
Besser man ändert nicht die Selektierung, sondern die Positionierung.
Delphi-Quellcode:
ListBox1.TopIndex := ListBox1.ItemIndex - 1;
(Sind das immer 3 Einträge, auch in Zukunft? Wenn nicht, dann besser
Delphi-Quellcode:
sichtbare_Zeilenanzahl durch 2
, aka
Delphi-Quellcode:
(ClientHeight durch ItemHeight) durch 2
)

Klickt mal auf einen sichtbaren Eintrag (außer dem in der Mitte) und wundert euch, warum der nicht aktiv wird. (bzw. warum wer wieder deselektiert wird)

LokutusvB 3. Nov 2014 10:16

AW: ListBox, mittlerer Eintrag immer markiert
 
Ja, die sichtbaren Einträge werden immer 3 sein. Die Anzahl aller Einträge wird variabel sein, aber mindestens 3.

Zusatz1:
Ich konnte kein Ereignis finden, das auf das Klicken des Scrollbalkens bzw. der Pfeile reagiert. Gibt es dafür kein Ereignis bei der Listbox?

Zusatz2:
Frage beantwortet. Nein, mit einer ListBox ist das nicht möglich. Lösung = eigene Komponente:
http://www.delphipages.com/forum/showthread.php?t=41035


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:30 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