[Gelöst] TScrollBox mit Align alClient blendet keine Scrollbars ein



  • Hallo,

    ich habe hier folgendes Problem:
    Ein Formular hat mehrere StringGrids, die untereinander angezeigt werden sollen, in der Gesamthöhe aber höher als das Formular sein können. Für sowas, dachte ich, nimmt eine TScrollBox und ordnet die einzelnen StringGrids darin an.
    Die TScrollBox hat Align alClient, damit sie die volle Größe des Formulars hat, die einzelnen Grids haben Align alTop, damit sie von oben nach unten angeordnet werden.
    Wenn ich das Formular jetzt soweit verkleinere, dass die StringGrids höher oder breiter als das Formular sind sollten eigentlich Scrollbars der ScrollBox eingeblendet werden, aber das tun sie nicht. Es scheint so, als ob die Größe der Scrollbox zwar angepasst wird, sie selbst davon aber nichts mitbekommt und daher auch die Anpassung der Scrollbars nicht durchführt.
    Wenn ich einen Ereignishandler auf das OnResize Event des Formulars setze und in diesem Handler die Höhe und Breite der ScrollBox manuell setze funktioniert das Ganze.
    Gibt´s dazu ´ne Lösung oder muss man das wirklich manuell machen?



  • Hallo,

    von VertScrollBar->Range ( HorzScrollBar->Range ) lese ich nix in deinem Post. Das ist doch eigentlich die betreffende Eigenschaft...



  • Manchmal bin ich so doof, dass mich die Schweine beissen...
    Irgendwie habe ich mir eine ScrollBox Breite zusammengerechnet, die über den Formularrand hinausragte und daher auch die ScrollBars zu spät eingeblendet hat. Mit der richtigen Breite funktionierts auch...

    @KPeter:
    Wieso sollte ich an der Range was ändern wollen? Die ScrollBox weiß, wie breit/hoch sie ist und sie weiß auch, wie breit/hoch ihre Kinder sind. Damit sollte sie die ScrollBar Attribute selbst berechnen können.



  • DocShoe schrieb:

    Die TScrollBox hat Align alClient, damit sie die volle Größe des Formulars hat

    Somit hast du manuell keinen Einfluss auf Breite/Höhe der ScrollBox mehr. Die Box füllt den Clientbereich des Formulares aus.
    Beim Event FormResize ermittelst und setzt du den Range, den nichtsichtbaren und zu scrollenden Bereich.


Anmelden zum Antworten