TListbox : horizontaler Scrollbalken
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
TListbox : horizontaler Scrollbalken
Bei einer TListbox wird automatisch die ScrollWidth auf einen Wert größer 0 gesetzt.
Unter Linux hat dies keine Auswirkungen, wohl aber unter Windows (Laz 32bit).
Dann wird nämlich immer der horizontale Scrollbalken angezeigt, obwohl er nicht notwendig ist. Und das sieht hässlich aus.
Ich behelfe mir dann immer damit, dass ich die ScrollWidth explizit auf 0 setze. Dann ist er weg.
Kann ich nicht generell bei einer TListbox festlegen, dass kein horizontaler Scrollbalken angezeigt wird (wohl aber ein vertikaler) ?
Unter Linux hat dies keine Auswirkungen, wohl aber unter Windows (Laz 32bit).
Dann wird nämlich immer der horizontale Scrollbalken angezeigt, obwohl er nicht notwendig ist. Und das sieht hässlich aus.
Ich behelfe mir dann immer damit, dass ich die ScrollWidth explizit auf 0 setze. Dann ist er weg.
Kann ich nicht generell bei einer TListbox festlegen, dass kein horizontaler Scrollbalken angezeigt wird (wohl aber ein vertikaler) ?
Re: TListbox : horizontaler Scrollbalken
Verstehe ich nicht. Ich habe alle mir einfach zugänglichen Lazarus-Versionen bis zurück zu Version 1.0 ausprobiert, und bei allen ist ScrollWidth = 0, wenn eine Listbox aufs Formular gesetzt wird. Entsprechend sehe ich im Normallfall auch keinen horizontalen Scrollbar. Nur wenn Columns > 0 und mehr Spalten nötig sind als unter Columns festgelegt. Win 10/64 bit, aber Lazarus/fpc 32 bit.malabarista hat geschrieben:Bei einer TListbox wird automatisch die ScrollWidth auf einen Wert größer 0 gesetzt.
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
Bei mir ist Columns immer 1.
Denn ich habe ja eine Spalte. Oder ist dies vielleicht mein Fehler ?
Denn ich habe ja eine Spalte. Oder ist dies vielleicht mein Fehler ?
Re: TListbox : horizontaler Scrollbalken
Auch das ist bei mir anders: Columns ist bei einer neu aufs Formular geklickten Listbox 0. Für das Auftreten des horizontalen Rollbalkens scheint das aber keinen Einfluss zu haben. Hier ist lediglich ausschlaggebend, ob ScrollWidth größer als die Breite der Listbox ist.
Welche Lazarus-Version hast du? Es handelt sich um die Original-Listbox, die mit Lazarus mitkommt, oder eine aus einem Komponenten-Paket?
Welche Lazarus-Version hast du? Es handelt sich um die Original-Listbox, die mit Lazarus mitkommt, oder eine aus einem Komponenten-Paket?
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
Ich habe:
Windows 7 (64-bit), Laz 32bit.
L1.6.4-1 FPC 3.0.0
Automatisch wird Columns auf 0 gesetzt.
Ich hatte die Columns auf 1 gesetzt, weil ich dachte:es ist ja eine Spalte.
Windows 7 (64-bit), Laz 32bit.
L1.6.4-1 FPC 3.0.0
Automatisch wird Columns auf 0 gesetzt.
Ich hatte die Columns auf 1 gesetzt, weil ich dachte:es ist ja eine Spalte.
Re: TListbox : horizontaler Scrollbalken
0 würde ich hier als "automatisch" interpretieren, allerdings fällt mir nichts auf, was da "automatisch" eingestellt wird...
Die Frage bleibt weiterhin, wieso bei dir ScrollWidth nicht 0 ist. Denn auch wenn ich Columns auf 1 setze, ändert sich ScrollWidth nicht.
Die Frage bleibt weiterhin, wieso bei dir ScrollWidth nicht 0 ist. Denn auch wenn ich Columns auf 1 setze, ändert sich ScrollWidth nicht.
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
Vorgehensweise:
scrollwidth=0 setzen und anschliessend Columns=1 setzen
projekt compilieren
Lazarus beenden
Lazarus neu starten
dann steht in scrollwidth ein Wert>0 (bei mir 144)
scrollwidth=0 setzen und anschliessend Columns=1 setzen
projekt compilieren
Lazarus beenden
Lazarus neu starten
dann steht in scrollwidth ein Wert>0 (bei mir 144)
Re: TListbox : horizontaler Scrollbalken
Irgendwas fehlt in der Beschreibung, beim mir ist am Ende der Prozedur ScrollWidth immer noch 0. Stehen Strings in den Items? Welche?
Ich denke fast, du hast irgendwo in dem Projekt Code, der ScrollWidth auf diesen Wert setzt. Durchläufst du nach dem Laden der Listbox (Form.Loaded ?, FormActivate oder FormShow Events?) eine Schleife, die alle Strings in der Listbox durchläuft, die maximale Stringlänge in Pixeln ermittelt und in ScrollWidth einträgt? Denn das wäre die Art und Weise, wie ich ScrollWidth verwenden würde.
Bitte extrahiere alles in eine kleine Demo und poste das hier (nur pas, lfm, lpi und lpr-Dateien, alles zusammen in einem zip).
Ich denke fast, du hast irgendwo in dem Projekt Code, der ScrollWidth auf diesen Wert setzt. Durchläufst du nach dem Laden der Listbox (Form.Loaded ?, FormActivate oder FormShow Events?) eine Schleife, die alle Strings in der Listbox durchläuft, die maximale Stringlänge in Pixeln ermittelt und in ScrollWidth einträgt? Denn das wäre die Art und Weise, wie ich ScrollWidth verwenden würde.
Bitte extrahiere alles in eine kleine Demo und poste das hier (nur pas, lfm, lpi und lpr-Dateien, alles zusammen in einem zip).
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
Anbei ein ganz einfaches Projekt.
Allerdings unter Linux Mint 18.1 64bit.
Jetzt steht in scrollwidth 137 drin.
Dort eine 0 eintragen und dann F9
Dann Lazarus beenden.
Lazarus wieder starten.
Dann steht wieder 137 in scrollwidth.
Allerdings unter Linux Mint 18.1 64bit.
Jetzt steht in scrollwidth 137 drin.
Dort eine 0 eintragen und dann F9
Dann Lazarus beenden.
Lazarus wieder starten.
Dann steht wieder 137 in scrollwidth.
- Dateianhänge
-
testlistbox.zip
- (124.07 KiB) 128-mal heruntergeladen
- Niesi
- Lazarusforum e. V.
- Beiträge: 587
- Registriert: So 26. Jun 2016, 19:44
- OS, Lazarus, FPC: Linux Mint Cinnamon, Laz 4.1 Fpc 3.2.3 und allerlei mit FpcUpDeLuxe
- Kontaktdaten:
Re: TListbox : horizontaler Scrollbalken
malabarista hat geschrieben:Anbei ein ganz einfaches Projekt.
Allerdings unter Linux Mint 18.1 64bit.
Jetzt steht in scrollwidth 137 drin.
Dort eine 0 eintragen und dann F9
Dann Lazarus beenden.
Lazarus wieder starten.
Dann steht wieder 137 in scrollwidth.
Habe ich ausprobiert - bei mir bleibt es auf "0", der Scrollbalken bleibt auch weg.
Habe eine tListBox hinzugefügt, ScrollWidth ist "0" und bleibt auch so.
Da muss was anderes "faul" sein ...
Beste Grüße
P. S.: Nur unter Windows 7 getestet ...
Zuletzt geändert von Niesi am Do 9. Nov 2017, 15:22, insgesamt 1-mal geändert.
Wissen ist das einzige Gut, das sich vermehrt, wenn es geteilt wird ...
Re: TListbox : horizontaler Scrollbalken
Bei mir steht auch nach dem erneuten Laden die 0 drin (allerdings nur unter Windows getestet).
Kann es sein, dass bei dir AutoSave aus ist (wobei ich jetzt gar nicht weiß, wie man das ausschaltet)? Was passiert, wenn du nach dem Ändern von ScrollWidth auf 0 und vor dem Neucompilieren das Projekt explizit speicherst?
Kann es sein, dass bei dir AutoSave aus ist (wobei ich jetzt gar nicht weiß, wie man das ausschaltet)? Was passiert, wenn du nach dem Ändern von ScrollWidth auf 0 und vor dem Neucompilieren das Projekt explizit speicherst?
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
So, trotz speichern vor dem Compilieren tritt der Effekt auf.
ABER ich habe mal noch etwas anderes ausprobiert:
ich habe das Projekt gespeichert mit scrollwidth=0
und Lazarus beendet und anschliessend erneut gestartet: Anzeige scrollwidth=137
Dann habe ich die unit1.lfm mit einem Texteditor geöffnet und dort steht kein Scrollwidth drin, d.h. Scrollwidth ist 0.
Bleibt also nur noch die Frage, wo bekommt Lazarus diese 137 her, ohne dass sie in der Datei steht ?
Screenshot anbei.
ABER ich habe mal noch etwas anderes ausprobiert:
ich habe das Projekt gespeichert mit scrollwidth=0
und Lazarus beendet und anschliessend erneut gestartet: Anzeige scrollwidth=137
Dann habe ich die unit1.lfm mit einem Texteditor geöffnet und dort steht kein Scrollwidth drin, d.h. Scrollwidth ist 0.
Bleibt also nur noch die Frage, wo bekommt Lazarus diese 137 her, ohne dass sie in der Datei steht ?
Screenshot anbei.
Re: TListbox : horizontaler Scrollbalken
Es geht hier um das Mini-Projekt, das du oben gepostet hast? Nirgendwo zusätzlicher Code, der das machen könnte? Sehr seltsam...
-
- Beiträge: 321
- Registriert: Sa 11. Jun 2016, 12:16
- OS, Lazarus, FPC: Linux Mint 18.1 L1.6.2-1 FPC 3.0.0
- CPU-Target: 64Bit
- Wohnort: Konstanz
Re: TListbox : horizontaler Scrollbalken
Ja, das ist alles.
Re: TListbox : horizontaler Scrollbalken
Bin jetzt auf meine Mint-VM gegangen (gtk2), und da sehe ich genauso wie du, dass beim Einbauen einer neuen Listbox ins Formular deren ScrollWidth auf einen Wert > 0 gesetzt wird, der der Breite der Listbox entspricht (minus 2 Pixel, --> Clientwidth). Ob in ScrollWidth ein Wert erscheint, hängt also vom Widgetset ab. Dennoch erscheint auch hier unter Linux kein horizontaler Scrollbalken, zumindest solange man unter Scrollwidth keinen Wert einträgt, der größer ist als die ClientWidth der Listbox. Wo ist dann das Problem? Die Regel scheint - widgetset-übergreifend - zu sein: Horizontaler Rollbalken erscheint, wenn ScrollWidth > Listbox.ClientWidth.