Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Abfragen ob Scrollbars existieren
Dragonclaw - Mo 08.10.07 23:36
Titel: Abfragen ob Scrollbars existieren
Hallo!
Ich suche eine Möglichkeit festzustellen, ob eine Form Scrollbars hat, nämlich die, die auftauchen wenn Form.autoscroll auf true ist.
Vielen Dank für die Antworten.
Lannes - Di 09.10.07 00:10
Hallo,
ein Vorschlag:
Delphi-Quelltext
1: 2:
| if Width-(GetSystemMetrics(SM_CXSIZEFRAME)*2) <> ClientWidth then |
Dragonclaw - Di 09.10.07 00:48
mhmm so klappt das nicht: Hab das gerade mal ausprobiert und nen bisschen damit rumgespielt.
Es scheint so zu sein, das SM_CXSIZEFRAME gleich bleibt wenn eine Scrollbar vorhanden ist oder nicht.
Hast du noch irgend eine Idee. Es wäre ja eigentlich auch möglich, alle komponenten durch zu gehen, und gucken ob irgendwo Komp.left + Komp.width > ClientWidth ist, wenn dies der Fall ist, existiert eine Scrollbar.
Allerdings würde ich nur sehr ungerne auf diese Lösung zurück greifen.
Lannes - Di 09.10.07 08:50
Hallo,
ist klar das SM_CXSIZEFRAME gleich bleibt, den GetSystemMetrics(SM_CXSIZEFRAME) liefert die Breite des Rahmens einer Form.
ClientWidth ist die Breite des Clientbereichs der Form.
Width enthält die Breite der gesamten Form,
also Rahmen + Clientbereich + Scrollbar + Rahmen.
Wenn Width-(GetSystemMetrics(SM_CXSIZEFRAME)*2) <> ClientWidth ist, dann ist die vertikale Scrollbar sichtbar.
Könntest die Bedingung auch so ausdrücken:
Delphi-Quelltext
1: 2: 3: 4: 5:
| var Rahmen : Integer; begin Rahmen := GetSystemMetrics(SM_CXSIZEFRAME); if Width - Rahmen - ClientWidth - Rahmen <> 0 then |
Dragonclaw - Di 09.10.07 13:41
Okay, für die Vertikale funktioniert das jetzt. Vielen Dank schon mal.
Allerdings funktioniert das gleiche NICHT für die Horizentale.
Ich habe leider auf anhieb, keine Möglichkeit gefunden die pixel höhe vom oberen Rahmen herauszufinden.
Weißt du vllt. ob es sowas gibt?
Gausi - Di 09.10.07 13:46
Die Höhe der Caption bekommt man mit GetSystemMetrics(SM_CYCAPTION), die Höhe des Rahmens mit GetSystemMetrics(SM_CYFrame).
Dragonclaw - Di 09.10.07 13:58
Vielen Dank!
Hier nochmal die beiden Abfragen:
Horizontale Scrollbar:
Delphi-Quelltext
1:
| Height - ClientHeight - GetSystemMetrics(SM_CYCAPTION) - 2*GetSystemMetrics(SM_CYFrame) <> 0 |
Vertikale Scrollbar:
Delphi-Quelltext
1:
| Width - ClientWidth - 2 * GetSystemMetrics(SM_CXSIZEFRAME) <> 0 |
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!