Hi!
Größe der Arbeitsfläche eines Forms ermitteln (Scrollbar!) macht folgende Probleme:
1) Form1.ClientWidth und ClientHeight geben nur die Werte des aktuell sichtbaren Bereiches an.
2) VertScrollBar.Range oder HorzScrollbar.Range ist nur gültig, wenn die Scrollbar "sichtbar" ist.
3) "Sichtbar" sind die ScrollLeisten nur dann, wenn z.B. HorzScrollbar.Range < ClientWidth ist. ".Visible" hat damit nix zu tun / keinen Einfluß. (AutoScroll = True), bzw. "Range" wird nicht mehr aktualisiert, wenn die Bildlaufleiste nicht von Nöten ist.
4) Button1.Top und Left sind relativ zur linken, oberen FensterEcke, nicht zur linken oberen Ecke des Arbeitsbereiches innerhalb der Form.
Wie kann ich nun genau herausfinden, wie groß aktuell meine Arbeitsfläche ist.
Etwas ist der Richtung von
Delphi-Quellcode:
if ClientWidth > HorzScrollBar.Range then begin
BreiteDerArbeitsflache := ClientWidth;
end else begin
BreiteDerArbeitsflache := HorzScrollBar.Range
end;
geht
imho garnicht.
Auch wenn ich neu erzeugte Objekte ausrichten will (Left := 10) kann ich nicht jedes Mal Rücksicht auf die Bildlaufleisten nehmen und schauen, ob die Werte stimmten oder noch Pi-Mal-Daumen HorzScrollbar.Position abgezogen werden muss.
Oder mache ich da was falsch?
Danke im vorraus.