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 und Columns>0 (https://www.delphipraxis.net/72031-tlistbox-und-columns-0-a.html)

Michaela_ 24. Jun 2006 08:12


TListBox und Columns>0
 
Hallo,

ich habe ein kleines Problem mit einer TListBox.
Und zwar sollen die Einträge horizontal aufgelistet werden. Dazu habe ich die Eigenschaft Columns>0 gesetzt. Wird natürlich auch richtig angezeigt.

Problem ist, dass beim Anklicken eines Eintrages auf der rechten Seite die ListBox automatisch ins scrollen beginnt und beim Loslassen der Maustaste dann einen ganz anderen Eintrag als zuerst gewünscht markiert.

Gibt es eine Möglichkeit dieses automatische Scrollen abzustellen?

danke für eure Hilfe,
Michalea

Nils_13 24. Jun 2006 08:47

Re: TListBox und Columns>0
 
Was meinst du genau mit Columns>0 ? Zeig einfach die betroffene Codestelle.

Michaela_ 24. Jun 2006 09:01

Re: TListBox und Columns>0
 
Liste der Anhänge anzeigen (Anzahl: 2)
Ich setzte zum Beispiel Columns=2 damit 2 Spalten angezeigt werden und um die Liste horizontal scrollen zu können. Die zwei Spalten werden korrekt angezeigt, allerdings wird die Spalte auf der rechten Seite nicht ganz angezeigt, sondern nur teilweise (ein paar Pixel fehlen).

Wenn man jetzt darauf klickt, dann scrollt die ListBox automatisch nach Links. Wenn man dann die Maustatse loslässt ist danach natürlich ein anderer Eintrag ausgewählt. Wenn man die Maustaste gedrückt lässt dann scroll die ListBox auch automatisch bis zum letzten Eintrag.

Ich hab mal ein Beispiel angehängt. Drückt man zb. auf den Eintrag "gggg..." so verschiebt sich die Listbox. Und das möchte ich gerne verhindern.

Source gibts dazu eigentlich keinen, aber ich hab das Projekt auch mal angehängt.


lg,
Michaela

Nils_13 24. Jun 2006 09:10

Re: TListBox und Columns>0
 
Es gibt leider kein AutoScroll, also kannst du, wenn es so wenig Items bleiben einfach die ListBox verbreitern, also Width erhöhen oder auch Height erhöhen. Außerdem: Bei dem Beispiel (Source) habe ich keine Probleme, bei dem kompilierten Beispiel tritt der Scrolleffekt allerdings auf, wie du es gesagt hast.

mfg, Nils.

Michaela_ 25. Jun 2006 08:33

Re: TListBox und Columns>0
 
Auch in Delphi7 tritt der Effekt auf wenn ich zb. die Spaltenbreite auf 120 Pixel setzte und ein Eintrag nicht ganz dargestellt wird. Sobald ein solcher nicht ganz dargestellt wird, wird er in die Anzeige gescrollt.

Das war nur ein Beispiel, im Programm selber ist die Listbox natürlich größer und die Spaltenbreite ist 280 Pixel. Der einzige Workaround wäre die Breite der Listbox als ein vielfaches von 280 zu setzten was leider nicht geht.

Ich hab auch versucht mit der Message LB_SETCARETINDEX das zu verhindern. Hier kann man unter lParam angeben zu dem Eintrag gescrollt wird oder nicht, aber der wird vollkommen ignoriert.

lg

Sharky 25. Jun 2006 08:54

Re: TListBox und Columns>0
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hai Michaela_

das sieht fast wie ein Bug aus? Wenn ich das ganze unter BDS2006 kompiliere läuft es so wie Du es möchtest. (Siehe Anhang).

Nils_13 25. Jun 2006 09:26

Re: TListBox und Columns>0
 
Bei mir läuft es auch, wenn ich es mit Delphi 7 kompiliere. Komisch.

Michaela_ 26. Jun 2006 18:15

Re: TListBox und Columns>0
 
Habe es auch unter Delphi7 getestet. Hier läuft es ohne weitere Änderung, da scheinbar das Setzen des Wertes Column von der Komponente anders als in Delphi5 umgesetzt wird.
Wenn ihr aber die Spaltenbreite ändert...

Delphi-Quellcode:
SendMessage( ListBox1.Handle, LB_SETCOLUMNWIDTH, 120, 0 );
...dann bekommt ihr auch hier den selben Effekt.


lg


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