AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Vista-Formular ist breiter/höher als width/height angeben
Thema durchsuchen
Ansicht
Themen-Optionen

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

Ein Thema von r29d43 · begonnen am 25. Mai 2008 · letzter Beitrag vom 27. Mai 2008
Antwort Antwort
Seite 1 von 2  1 2      
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#1

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

  Alt 25. Mai 2008, 18:11
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,
...
  Mit Zitat antworten Zitat
dominikkv

Registriert seit: 30. Sep 2006
Ort: Gundelfingen
1.109 Beiträge
 
Delphi 2007 Professional
 
#2

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

  Alt 25. Mai 2008, 18:17
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.
Dominik
Wer anderen eine Grube gräbt, hat ein Gruben-Grab-Gerät!
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#3

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

  Alt 27. Mai 2008, 08:41
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.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.196 Beiträge
 
Delphi 10.4 Sydney
 
#4

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

  Alt 27. Mai 2008, 08:49
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.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

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

  Alt 27. Mai 2008, 09:46
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)
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.798 Beiträge
 
Delphi 12 Athens
 
#6

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

  Alt 27. Mai 2008, 09:51
Hast Du unter Vista auch entwickelt? Haben die Fenster denn auch im Designer die dicken Fenster?

Sherlock
Oliver
  Mit Zitat antworten Zitat
taaktaak

Registriert seit: 25. Okt 2007
Ort: Radbruch
1.990 Beiträge
 
Delphi 7 Professional
 
#7

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

  Alt 27. Mai 2008, 09:53
Moin, Moin,
jeder Anwender kann unter "Eigenschaften der Anzeige", "Darstellung" etc. die Randbreiten der aktiven und inaktiven Fenster individuell einstellen.
Ralph
  Mit Zitat antworten Zitat
OregonGhost

Registriert seit: 8. Jun 2002
Ort: Lübeck
1.216 Beiträge
 
Delphi 3 Professional
 
#8

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

  Alt 27. Mai 2008, 09:56
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.
Oregon Ghost
---
Wenn NULL besonders groß ist, ist es fast schon wie ein bisschen eins.
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#9

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

  Alt 27. Mai 2008, 13:47
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.)
Angehängte Grafiken
Dateityp: bmp heightwidthproblem_126.bmp (489,1 KB, 30x aufgerufen)
  Mit Zitat antworten Zitat
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#10

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

  Alt 27. Mai 2008, 14:12
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.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 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