Einzelnen Beitrag anzeigen

berens

Registriert seit: 3. Sep 2004
434 Beiträge
 
Delphi 10.4 Sydney
 
#1

Größe der Arbeitsfläche eines Forms ermitteln (Scrollbar!)

  Alt 26. Okt 2009, 16:56
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.
  Mit Zitat antworten Zitat