Delphi-PRAXiS
Seite 1 von 2  1 2      

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 Vista-Formular ist breiter/höher als width/height angeben (https://www.delphipraxis.net/114442-vista-formular-ist-breiter-hoeher-als-width-height-angeben.html)

r29d43 25. Mai 2008 17:11


Vista-Formular ist breiter/höher als width/height angeben
 
Hi

Habe mir vor kurzem nun endlich auch das Vista zugelegt, und muss jetzt irgendwie feststellen, dass die Form-Abbildung auf dem Screen in ihrer Breite und Höhe nicht mit den im OI dafür eingestellten Werten übereinstimmt. Die per Screenshot und Grafik-Programm ausgemessenen Werte sind dabei immer um ca. 10 Pixels größer als sie im OI stehen. Befrage ich diese Maße per API-Funktion "getWindowRect", dann entsprechen diese wiederum denen im OI.

Kennt das eventuell schon jemand? Bin selbst justamente etwas ratlos. Weil wie soll man da ein Window exakt platzieren, wenn selbst auch so eine API-Funktion falsche Werte zurückgibt?

Thx im Voraus.

MfG,
...

dominikkv 25. Mai 2008 17:17

Re: Vista-Formular ist breiter/höher als width/height angebe
 
ClientWidth und ClientHeight sollten in beiden fällen immer gleich sein.
Der Rand ist halt OS-abhängig, und bei Width und Height wird der mit eingerechnet.

r29d43 27. Mai 2008 07:41

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Zitat:

ClientWidth und ClientHeight sollten in beiden fällen immer gleich sein.
Der Rand ist halt OS-abhängig, und bei Width und Height wird der mit eingerechnet.
ja, danke. - Aber irgendwie bringt mich das jetzt nicht so richtig weiter.


Ist das denn bei euch genauso? Und wenn ja, wie ermittelt ihr dann die exakte Width o. Height eines Formulars? Weil, es gibt ja schon durchaus genug Situationen, wo man diese Werte dann auch mal ganz genau braucht, z.B. beim Platzieren einer Form in die rechte unter WorkArea-Ecke des Screens etc. etc..

Ich könnte zwar dann im Vista-Fall immer den Differenzbetrag (sofern der dann auch immer konstant ist) zu diesen falschen Width- und Height-Werten dazuaddieren, aber unter einer halbwegs ordentlichen Lösung stelle ich mir schon noch etwas anderes vor.


?


PS. auch dass diese Api-Funktion da falsche Werte liefert, sollte doch eigentlich eher unmöglich sein(!!!) ...weil die doch quasi ein absoluter Bestandteil des Betriebssystems selbst ist und daher in jedem Falle immer exakte Werte ausgeben müsste.

Bernhard Geyer 27. Mai 2008 07:49

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Wenns wirklich so falsch ist: Hast du schon einen aktuellen Grafikkartentreiber installiert? Die mitgelieferten Treiber von neuen PC's/Laptops sind teilweise so fehlerhaft das sie nur für die Tonne zu gebrauchen sind.

angos 27. Mai 2008 08:46

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Zitat:

Zitat von r29d43
PS. auch dass diese Api-Funktion da falsche Werte liefert, sollte doch eigentlich eher unmöglich sein(!!!) ...

Wieso unmöglich, auch die Programmierer bei MS kochen nur mit Wasse, müssen auf Klo und machen Fehler.

zum Thema: Beim Rand weis ich leider nicht, ob dieser pro OS immmer eindeutig breit ist, kann mir aber gut vorstellen, dass das nicht so ist (verschiedene Windowsthemes)

Sherlock 27. Mai 2008 08:51

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Hast Du unter Vista auch entwickelt? Haben die Fenster denn auch im Designer die dicken Fenster?

Sherlock

taaktaak 27. Mai 2008 08:53

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Moin, Moin,
jeder Anwender kann unter "Eigenschaften der Anzeige", "Darstellung" etc. die Randbreiten der aktiven und inaktiven Fenster individuell einstellen.

OregonGhost 27. Mai 2008 08:56

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Für verschieden dicke Fensterrahmen braucht man keine Themes. Man kann seit Ewigkeiten (ich würde sogar wagen zu behaupten, seit 9x-Zeiten) die Rahmendicke individuell einstellen. Wer sich also auf eine bestimmte Rahmendicke verlässt, hat zu 32-Bit-Zeiten schon immer fahrlässig gehandelt. Ist halt nur wieder so typisch, dass man das erst unter Vista bemerkt, weil dort der Rand eben standardmäßig dicker ist. Vielleicht hilft hier ein Blick in die Einstellungen, da werden die meisten noch eine überraschende Anzahl von Einstellungsmöglichkeiten finden, die sie in ihren Programmen berücksichtigen müssen, wenn sie irgendwelche seltsamen Dinge machen wollen. Du kannst die Einstellungen per GetSystemMetrics zur Laufzeit abfragen.

Du brauchst normalerweise die Rahmendicke aber nicht zu berücksichtigen. Platziere das Fenster einfach so, dass der Clientbereich richtig liegt, solange der Rand nicht in deine anderen Fenster hineinragen kann. Falls er das doch kann, musst du eben zusätzlich den Abstand berücksichtigen.

Trotz rotem Kasten gepostet, hat noch mehr Information, dazu folgende:
Zusätzlich zu den von taaktaak genannten Einstellungen gibt es noch "Rahmenfüllung", die als einzige unter Vista höher ist als unter XP.

r29d43 27. Mai 2008 12:47

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Besten Dank erst nochmal für die rege Mithilfe!


Den Treiber für die Graphik-Karte habe ich nochmal gecheckt – es war aber schon der richtige installiert.

Bezüglich irgendwelcher Rahmen-Größen (von aktiven o. inaktiven Fenstern) oder Rahmenfüllungen habe ich selbst aber noch nie irgendwelche Änderungen an den Grundeinstellungen vorgenommen. Kann mir irgendwie nicht vorstellen, dass diese Height/Width-Anomalie von völlig ursprünglichen Grundeinstellungen dieser Art und Sorte verursacht wird, denn dann müssten sie ja event. auch etwas häufiger auftreten.

Allerdings, @Sherlock, die beiden Window-Abbildungen sind tatsächlich unterschiedlich. Das muss ich wohl bisher immer so als Art optische Täuschung übersehen haben!?! Im Designer hat das Window exakt die Maße wie sie auch im OI angegeben sind (und die Api-Funktion sie zurückliefert). Beim laufenden Programm sind die Height- und Width-Werte dann aber immer um 10 Pixels größer. Zur besseren Veranschaulichung des Ganzen habe ich mal einen entsprechenden Screenshot davon angehängt.

Und/Aber was sagt das jetzt dem Profi, wenn diese beiden Window-Abbildungen unterschiedlich sind? Mir nämlich jetzt leider im Moment noch nicht übermäßig viel.


(Arbeite übrigens mit Turbo-Delphi und Vista ultimate (32-Bit), falls das noch für irgendwas relevant sein sollte.)

r29d43 27. Mai 2008 13:12

Re: Vista-Formular ist breiter/höher als width/height angebe
 
Ok, habe die Ursache jetzt doch gefunden. Unter "Anpassen" -> "Fensterfarbe und -darstellung" war unter Farbschema "Windows-Aero" eingestellt. Nachdem ich auf "Windows Vista-Basis" umgeschaltet hatte, stimmte es dann.

Trotzdem, wieso er diese "Windows-Aero" -Einstellung so "unexakt" abhandelt ist nicht so ganz einleuchtend. Eventuell denkt er ja, dass der Window-Rahmen dann eh durchsichtig ist. Ich allerdings hatte die Transparenz jetzt ganz ausgeschaltet ...und dann wird es irgendwie schon zum kleinen Fehler.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:16 Uhr.
Seite 1 von 2  1 2      

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