Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Komponente.Height bis zum Bildschirmrand setzen (https://www.delphipraxis.net/15667-komponente-height-bis-zum-bildschirmrand-setzen.html)

PAX 2. Feb 2004 14:27


Komponente.Height bis zum Bildschirmrand setzen
 
Hi Leude!

Ich habe eine grafische Komponente, welche evtl. auch eine vertikale Scrollleiste haben kann, die bei einem Maximierten Formular von der Höhe her bis zum Bildschirmrand gehen soll. Das Problem dabei ist, dass bei den 0,0 Koordinaten auf dem Form nicht vom tatsächlichen Nullpunkt ausgegangen wird, sondern die y-Achse erst unter der Titel+Menüleiste mit 0 anfängt! Auf eine bestimmte Zahlenkonstante kann ich mich nicht festlegen, weil die höhe der Titelleiste, bzw. Menüleiste, je nach eingestellten Windowsschema, variiert!
Beispielsweise ist die Titelleiste bei WindowsXP-Design breiter als beim klassischen. Eine lösungsmöglichkeit wäre, eben die aktuelle Breite dieser beiden Leisten zu ermitteln, aber vielleicht existiert ja noch eine andere Möglichkeit.
Ich hoffe mal, ihr habt meinen Wirrwarr verstanden :)
Machts gut

P A X

Matze 2. Feb 2004 14:30

Re: Komponente.Height bis zum Bildschirmrand setzen
 
Du könntest BorderStyle der Form auf bsNone stellen, allerdings ist dann die Titelleiste weg. :gruebel:

sakura 2. Feb 2004 14:30

Re: Komponente.Height bis zum Bildschirmrand setzen
 
Dann musst Du komplett ohne die Menüzeile und ohne die Titelzeile arbeiten. Also kein MainMenu im Form setzen und FormStyle sowie Bordestyle entsprechend anpassen.

Formmenü und Formcaption liegen im Non-Client Bereich des Forms, da kommen einfache Komponenten aber nicht hin. Kurz: die müssen weg ;-)

...:cat:...

Schubi 2. Feb 2004 14:41

Re: Komponente.Height bis zum Bildschirmrand setzen
 
Ruhig Blut...Alles kein Problem:

Delphi-Quellcode:
P := ScreenToClient(Point(Form1.Left,Form1.Top));
  P.X := 0 - P.X;
  P.Y := 0 - P.Y;
  Label13.Caption := IntToStr(P.X);
  Label14.Caption := IntToStr(P.Y);
Achso: var P : TPoint

Diese paar Zeilen sagen dir, wie breit und wie hoch der Randbereich von deinem Fenster sind.

Also
ClientLeft := Form1.Left + P.X
ClientTop := Form1.Top + P.Y

Zusätzlich gibts auch noch ClientToScreen, ClientToParent, und umgedreht :mrgreen:
Einfach mal in die Hilfe Schauen

PAX 2. Feb 2004 15:34

Re: Komponente.Height bis zum Bildschirmrand setzen
 
Die Firma dankt! :cheers:
Kannst du mir noch erklären, wie das funktioniert? Ich hab nicht verstanden, was lokale oder Clientkoordinaten sind? Ich hab über die Delphi-Hilfe nicht für mich rausfinden können, wie ScreenToClient funktioniert, was es macht.
Kannst du mir das noch erklären? :nerd:

PAX :dance:

Matze 2. Feb 2004 15:45

Re: Komponente.Height bis zum Bildschirmrand setzen
 
ALso, Client gibt, so zu sagen, die Fläche des Formulars an, die du verwenden kannst.

Delphi-Quellcode:
Client.Width //Breite des verwendbaren Bereichs
Client.Height //Höhe ...

Schubi 2. Feb 2004 17:10

Re: Komponente.Height bis zum Bildschirmrand setzen
 
ScreenToClient Sagt dir die Koordinaten im Client wenn du die Screen-Koordinaten übergibst. Wenn dein Form also Top = 100 Sitzt (Screen) und die Titelzeile 23 hoch ist, gibt ScreenToClient(Point(?,130))
einen Y-Wert von 7 zurück, weil das Form bei 100 + 23 für den Titel sind 123 wo dein Client beginnt, und von da aus sinds noch 7 bis zur 130

Umgedreht, gleiches Beispiel: ClientToScreen(Point(?,7)) -> Y = 130

Parent ist dann z.B. ein Button oder ein Memo auf dem Client


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz