Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Anchors fehlerhaft / Komponente länger als Form (https://www.delphipraxis.net/137267-anchors-fehlerhaft-komponente-laenger-als-form.html)

TheMiller 17. Jul 2009 10:50


Anchors fehlerhaft / Komponente länger als Form
 
Hallo,

ich habe hier ein Problem mit der Anchors-Eigenschaft. Und zwar habe ich eine PageControl-Komponente, die zwischen Menü und Statusleiste sitzt und zu allen Komponenten bzw. allen Seiten 10px Abstand hat (ungefähr). Da die User das Programm vergrößern dürfen / sollen, hat diese Komponente alle Anchors gesetzt bekommen (links, rechts, oben, unten).

Auf meinem Notebook / Desktop-PC funktioniert das vergrößern und verkleinern super. Probleme macht das Netbook. Das Programm bekomm bei eine Netbook-Auflösung eine spezielle Größe, die auch eingehalten wird. Die PageControl wird auch etwas verkleinert, aber nicht genug. Sie ist so lang, dass sie hinter der Statusbar verschwindet.

Wird die Form vergrößert oder verkleinert, wird die PageControl das auch - die Anchors scheinen zu greifen. Dennoch ist die Komponente zu groß (ca 50px) und wird somit abgeschnitten.

Beim Start prüfe ich, ob die Auflösung des PCs kleiner als 800 ist und setze so die Größe des Programms fest. Hier noch etwas Code:

Delphi-Quellcode:
Form1.Left:=ini.ReadInteger('Position', 'Left', 0);
    Form1.Top:=ini.ReadInteger('Position', 'Top', 0);
    Form1.Width:=ini.ReadInteger('Position', 'Width', 972);
    if (Screen.Height < 800) then // NetBook-Res
      //Form1.Height:=ini.ReadInteger('Position', 'Height', Screen.Height-60)
      Form1.Height:=ini.ReadInteger('Position', 'Height', 560)
    else
      Form1.Height:=ini.ReadInteger('Position', 'Height', 614);
Für Form1 habe ich auch Constrains gesetzt: MinHeight = 530 | MinWidth = 956

Ich hoffe ihr habt verstanden, was mein Problem ist und könnt mir helfen.

Vielen Dank im Voraus

himitsu 17. Jul 2009 11:02

Re: Anchors fehlerhaft / Komponente länger als Form
 
ist die Anwendung mit einer größeren Auflösung kompiliert, als auf den Laptopdesktp paßt?

Dann wird schon beim erstellen der Vorm diese von Windows beschnitten, und leider behandelt dieses Delphi nicht :?.

Lösung: erstelle/compiliere die Form kleiner und vergrößere sie auf größeren Monitoren.

TheMiller 17. Jul 2009 11:28

Re: Anchors fehlerhaft / Komponente länger als Form
 
Tatsache... :shock:

So funktioniert's prima. Daran hätte ich im Leben nicht gedacht. Hab alle Komponenten durchgeprüft, ob diese die Verkleinerung blockieren etc.

Super. Vielen Dank.

himitsu 17. Jul 2009 12:15

Re: Anchors fehlerhaft / Komponente länger als Form
 
Nja, das Problem ist, daß man kein Fenster "Window" erstellen kann, welches größer ist, als der Desktop.
Leider versucht dieses Delphi aber, wird von Windows beschnitten, fragt selber die aktuelle Größe nicht nochmals ab und platziert dann die Komponenten so auf der Form, wie es in der Resource angegeben wurde, auch wenn das Fenster nun kleiner ist ... tja, und die Anchors reagieren nunmal auf die aktuelle Größe und nicht die gewollte. :stupid:

p80286 17. Jul 2009 13:09

Re: Anchors fehlerhaft / Komponente länger als Form
 
Hallo DJ-SPM,

ich hätte einen anderen Vorschlag, setz .Scaled auf false.
Bei True und einem Auflösungswechsel versucht Delphi die Oberfläche anzupassen und das geht meist in die Hose.

Gruß
K-H

DerDan 22. Jun 2010 09:08

AW: Re: Anchors fehlerhaft / Komponente länger als Form
 
Zitat:

Zitat von p80286 (Beitrag 933714)
Hallo DJ-SPM,

ich hätte einen anderen Vorschlag, setz .Scaled auf false.
Bei True und einem Auflösungswechsel versucht Delphi die Oberfläche anzupassen und das geht meist in die Hose.

Gruß
K-H

Prima, so geht das!

mfg

Bernhard Geyer 22. Jun 2010 09:13

AW: Re: Anchors fehlerhaft / Komponente länger als Form
 
Zitat:

Zitat von DerDan (Beitrag 1030824)
Zitat:

Zitat von p80286 (Beitrag 933714)
Hallo DJ-SPM,

ich hätte einen anderen Vorschlag, setz .Scaled auf false.
Bei True und einem Auflösungswechsel versucht Delphi die Oberfläche anzupassen und das geht meist in die Hose.

Gruß
K-H

Prima, so geht das!

Und dann den armen Laptop-Mitarbeiter mit 144dpi mit sehr kleinen Dialogen ärgern.

Delphi-Programme kann man wunderbar auch mit Scaled=True skalierbar und für große DPI-Auflösungen designen. Mann muss "nur" an 1-2 Stellen aufpassen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:43 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