von Stephan » Di, 26.09.2006 13:36
und warum nicht?
Soll der Dialog 1024 Pixel breit sein, kannst Du unter Verwendung des beim genanntenLink geposteten Codes am Schluß ergänzen:
Msgbox nWidthAppFont*1024 / nWidthPixel
Woran scheitert das? (außer an Rundungsfehlern)
Da der Code jedoch die Angaben aus einem nichtsichtbaren Dialog liest, sehe ich keine prinzipiellen Probleme die gelesenen Werte umzurechnen, dem Button zuzuweisen und erneut zu lesen und umzurechnen bis es genau 1024 Pixel sind und erst dann den Dialog sichtbar anzuzeigen.
Ein Beispiel:
ja, natürlich kannst Du keine 'starren' Umrechnungfaktoren benutzen sondern mußt diese dynamisch bestimmen. Weder sind die Faktoren systemunabhängig, noch wären Faktoren für Länge unnd Breite gleich, was Deine Rechnung ja zeigt.
Wegen o.g. Rundungsfehler würde ich das also in einer Optimierungsrechnung ermitteln und dann per Code dynamisch setzen.
Da ich bei kurzem Test jedoch sehe das 1024 nach obriger Methode eingestellt sich wohl nicht auf Sowas wie die 'Bruttogröße' bezieht, müßtest Du das ggf. selbst untersuchen.
Nein, das ist nicht zwingend 'schwammig', mir scheint nur das OOo die zwei bzw. drei äußersten Pixel die für die Plastizität des Dialogs sorgen nicht mitrechnet und Du diese selbst berücksichtigen müßtest, denn diese Pixel unterliegen nicht der MA-Einstellung in sofern sie es nicht können, denn es müssen ja immer 2 bzw. 3 Pixel sein, deren Pixelbreite durch die MA-Einheiten nicht beeinflußt werden kann oder anders gesagt wen Du etwas wie 'MA-Pixel' (=1x1 MA) konstatieren würdest wären die nur in Ausnahmefällen quadratisch, Systempixel sind jedoch immer quadratisch.
Hieraus dürfte also ein Teil der Rundungsfehler sich herleiten, da 4 Pixel in Breite und Höhe zwangsweise in ihrem Seitenverhältnis feststehen und deren Einfluß auf die restlichen Pixel von der Anzahl der restlichen Pixel bestimmt ist, er ist bei kleinen Dialogen größer als bei großen.
Obwohl das nun bloß eine Interpretation von mir ist, kann ich hier bei einem kurzen Test nachvollziehen, das es sich die nach o.g. Berechnungsweise gefundene Dialogbreite sich auf die Breite bezieht die die (blaue) Titelleiste einnimmt.
Gruß
Stephan
[quote]Auch dieser Thread: http://de.openoffice.info/viewtopic.php...6he+dialog
ist hierzu interessant, hat mir aber nicht wirklich geholfen. [/quote]
und warum nicht?
Soll der Dialog 1024 Pixel breit sein, kannst Du unter Verwendung des beim genanntenLink geposteten Codes am Schluß ergänzen:
Msgbox nWidthAppFont*1024 / nWidthPixel
Woran scheitert das? (außer an Rundungsfehlern)
Da der Code jedoch die Angaben aus einem nichtsichtbaren Dialog liest, sehe ich keine prinzipiellen Probleme die gelesenen Werte umzurechnen, dem Button zuzuweisen und erneut zu lesen und umzurechnen bis es genau 1024 Pixel sind und erst dann den Dialog sichtbar anzuzeigen.
[quote]Ein Beispiel:[/quote]
ja, natürlich kannst Du keine 'starren' Umrechnungfaktoren benutzen sondern mußt diese dynamisch bestimmen. Weder sind die Faktoren systemunabhängig, noch wären Faktoren für Länge unnd Breite gleich, was Deine Rechnung ja zeigt.
Wegen o.g. Rundungsfehler würde ich das also in einer Optimierungsrechnung ermitteln und dann per Code dynamisch setzen.
[i]Da ich bei kurzem Test jedoch sehe das 1024 nach obriger Methode eingestellt sich wohl nicht auf Sowas wie die 'Bruttogröße' bezieht, müßtest Du das ggf. selbst untersuchen.
Nein, das ist nicht zwingend 'schwammig', mir scheint nur das OOo die zwei bzw. drei äußersten Pixel die für die Plastizität des Dialogs sorgen nicht mitrechnet und Du diese selbst berücksichtigen müßtest, denn diese Pixel unterliegen nicht der MA-Einstellung in sofern sie es nicht können, denn es müssen ja immer 2 bzw. 3 Pixel sein, deren Pixelbreite durch die MA-Einheiten nicht beeinflußt werden kann oder anders gesagt wen Du etwas wie 'MA-Pixel' (=1x1 MA) konstatieren würdest wären die nur in Ausnahmefällen quadratisch, Systempixel sind jedoch immer quadratisch.
Hieraus dürfte also ein Teil der Rundungsfehler sich herleiten, da 4 Pixel in Breite und Höhe zwangsweise in ihrem Seitenverhältnis feststehen und deren Einfluß auf die restlichen Pixel von der Anzahl der restlichen Pixel bestimmt ist, er ist bei kleinen Dialogen größer als bei großen.
Obwohl das nun bloß eine Interpretation von mir ist, kann ich hier bei einem kurzen Test nachvollziehen, das es sich die nach o.g. Berechnungsweise gefundene Dialogbreite sich auf die Breite bezieht die die (blaue) Titelleiste einnimmt.[/i]
Gruß
Stephan