Dialoggröße anpassen

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

Benutzeravatar
jkl
***
Beiträge: 56
Registriert: Fr, 27.02.2004 23:43

Dialoggröße anpassen

Beitrag von jkl »

Hallo,

gibt es eine einfache Lösung, die Dialoggröße an die Bildschirmauflösung anzupassen. Ziel wäre nicht unbedingt die Inhalte entsprechend anzupassen, sondern einfach einen Bildschirm füllenden (oder bildschirmfüllenden ???) Dialog zu erhalten.

Danke

J. Kleis

P.S.: Sollte under dem Suchstichwort "Dialoggröße" die Lösung zu finden sein, bitte ich um Entschuldigung, aber mein Suchformular erlaubt kein "ö" und unter Dialoggroesse o.ä. habe ich nichts gefunden.
http://www.schulzeug-online.de OpenOffice in der Förderschule...
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Dialoggröße anpassen

Beitrag von turtle47 »

Hallo JKL,

um den Dialog entsprechend der der Bildschirmauflösung anzupassen musst Du zuerst die Information über die
aktuelle Einstellung haben. Für Win bekommst Du das mit folgendem Code:

Code: Alles auswählen

Sub Bildschirmaufloesung
	GlobalScope.BasicLibraries.LoadLibrary("ImportWizard")
	sTemplateKeyName = "SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\SERVICES\IALM\DEVICE0\Mon00000400"
	sTemplateValueName = "DefaultSettings.XResolution"
	X_Setting = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	sTemplateValueName = "DefaultSettings.YResolution"
	Y_Setting = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	msgbox "Die Bildschirmauflösung ist " & X_Setting & " x " & Y_Setting  
End Sub
Das Komische an der Sache ist, dass man das Makro zweimal aufrufen muss damit die Auflösung angezeigt wird. :(
Vielleicht können uns die Experten dazu eine Lösung nennen.

Wenn Du die Information der Auflösung hast kannst Du den Dialog über eine If-Anweisung entsprechend anpassen.

Hier der Code für den Dialog:

Code: Alles auswählen

Sub Variabler_Dialog
	Dim oDialog As Object
	DialogLibraries.LoadLibrary("Standard")
	oDialog = CreateUnoDialog(DialogLibraries.Standard.Dialog1)
	oDialog.Title = "Variabler Dialog"
	oDialog.Model.Width = 300
	oDialog.Model.Height = 150
	oDialog.Model.PositionX=0
	oDialog.Model.Positiony=0
	oDialog.Execute
End Sub
Schöne Grüsse.

Jürgen

Edit: Wenn man am Anfang des Codes noch folgendes voranstellt dann wird die Bildschirmauflösung schon beim ersten
Aufruf angezeigt: :lol:

Code: Alles auswählen

Public Const HKEY_LOCAL_MACHINE = &H80000002
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
ykcim
*****
Beiträge: 324
Registriert: Di, 29.07.2003 15:22
Wohnort: Neu-Isenburg
Kontaktdaten:

Re: Dialoggröße anpassen

Beitrag von ykcim »

Die Sache hat nur einen Haken: Die Dialoglemente werden nicht mitangepaßt!
Man ändert ausschließlich die Außengröße.
Das kann einen Dialog ganz schön versauen.

mfg
Michael
__
FAQ zu Starbasic -> http://www.starbasicfaq.de
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo,

ich habe mich riesig gefreut hier Code zur Ermittlung der Bildschirmauflösung zu finden.
Nur funktioniert der Code bei mir nicht, d.h. die Variablen bleiben leer.
Ich arbeite mit Win XP. Was mache ich falsch?
Muss ich eventuell sTemplateKeyName anpassen? Aber wie?
Vielen Dank im Voraus.

Viele Grüße
Christiana
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Dialoggröße anpassen

Beitrag von turtle47 »

Hallo Christiana,

bei mir funktioniert das Makro nach wie vor einwandfrei.

Hast Du folgendes beachtet:
Turtle47 hat geschrieben:Edit: Wenn man am Anfang des Codes noch folgendes voranstellt dann wird die Bildschirmauflösung schon beim ersten Aufruf angezeigt: :lol:

Code: Alles auswählen

Public Const HKEY_LOCAL_MACHINE = &H80000002
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo Jürgen,

vielen Dank für Deine rasche Antwort.
Ich habe die Constante vorangestellt. Daran liegt es also nicht.
Inzwischen habe ich mir auch mal in der Registry den Pfad angeschaut.
Er stimmt bei mir nur bis dahin überein:

Code: Alles auswählen

"SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\SERVICES\"
Danach kann ich wählen zwischen RDPDD und TSDDD und ich kann nirgendwo Werte für die Bildschirmauflösung entdecken.

Viele Grüße
Christiana
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Dialoggröße anpassen

Beitrag von eBayer »

Hallo,
ich stelle einfach mal eine naive Frage.......
Meinst Du Dialog oder Formular?
Falls Du ein Base-Formular oder ein beliebiges Writer-Basierendes Dokument meinst, kannst Du die Größe inclusive aller Elemente vollkommen dynamisch zoomen. Er merkt sich dann an dem Arbeitsplatz auch den benutzten Zoomfaktor. Du kannst es probieren, wenn Du die Taste "Strg" gleichzeitig mit dem Scrollrad der Maus betätigst. In Writer kannst Du es auch direkt über die Statusleiste konfigurieren.
Leider geht das nicht in Dialogen!
Anmerkung: ich habe das nur unter Windowas XP und Vista getestet.
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo eBayer,

danke für den Hinweis. Ich arbeite mit einem Calc-Formular und habe darin Tabellen-Kontrollfelder.
Um den Scroll-Balken im Tabellen-Kontrollfeld zu vermeiden, habe ich die Spalten ziemlich schmal gehalten. Für die breiteren Bildschirme könnte ich das Formular etwas optimaler gestalten und dazu wollte ich die Bildschirmauflösung abfragen.

Viele Grüße
Christiana
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Dialoggröße anpassen

Beitrag von turtle47 »

Hallo Christiana,
Christiana hat geschrieben:Nur funktioniert der Code bei mir nicht, d.h. die Variablen bleiben leer.
Das liegt wahrscheinlich daran, dass wir unterschiedliche Grafikkarten verwenden.

Nach meinen Informationen liegt der Hund hier begraben:
"SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\SERVICES\IALM\DEVICE0\Mon00000400"

Mit dem Tool RegSnap (ganz unten auf der Seite) habe ich meine Registry mit zwei verschiedenen Bilschirmauflösungen verglichen welches mir den im Makro verwendeten Pfad bestätigt hat.

Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Dialoggröße anpassen

Beitrag von turtle47 »

Hi,

versuche es mal so:

Code: Alles auswählen

Sub Bildschirmaufloesung
	GlobalScope.BasicLibraries.LoadLibrary("ImportWizard")
	sTemplateKeyName = "SYSTEM\ControlSet001\Control\Video\{77B7FC91-4893-41D5-9E95-DEAA254CDA1B}\Video"
	sTemplateValueName = "Service"
	s_Video = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	msgbox "Die Bezeichnung der Grafikkarte: " & s_Video   
	sTemplateKeyName = "SYSTEM\ControlSet001\Hardware Profiles\0001\System\CurrentControlSet\SERVICES\" & s_Video & "\DEVICE0\Mon00000400"
	sTemplateValueName = "DefaultSettings.XResolution"
	X_Setting = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	sTemplateValueName = "DefaultSettings.YResolution"
	Y_Setting = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	msgbox "Die Bildschirmauflösung ist " & X_Setting & " x " & Y_Setting 
End Sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo Jürgen,

Entschuldigung, ich war so in meine Arbeit mit meinem Formular vertieft, dass ich Deinen zweiten Post erst jetzt bemerkt habe.
Herzlichen Dank für Deine Mühe. Leider bleiben auch diesmal die Variablen leer. Weder die Grafikkarte noch die Bildschirmauflösung wird mir angezeigt.
Ich kann es mir nur so erklären, dass je nach verwendeter Grafikkarte die Werte an einer anderen Stelle hinterlegt werden.
Da kann ich also nur selbst nach der von Dir beschriebenen Methode auf die Suche gehen.
Eine allgemeingültige Lösung scheint es da nicht zu geben. Das bedeutetet aber auch, falls unsere Rechner hier unterschiedliche Grafikkarten haben, dass ich den Weg mit der Bildschirmauflösung verwerfen muss.
Aber auf jeden Fall habe ich wieder einmal dazugelernt.
Also nochmals vielen, vielen Dank.

Christiana
turtle47
*******
Beiträge: 1849
Registriert: Mi, 04.01.2006 20:10
Wohnort: Rheinbach

Re: Dialoggröße anpassen

Beitrag von turtle47 »

Christiana hat geschrieben:Leider bleiben auch diesmal die Variablen leer.
Hmmm, funktioniert den folgender Code von Michaels Homepage:

Code: Alles auswählen

Sub XP_ProductID
	GlobalScope.BasicLibraries.LoadLibrary("ImportWizard")
	sTemplateKeyName = "Software\Microsoft\Windows\CurrentVersion"
	sTemplateValueName = "ProductID"
	sProductID = QueryValue(HKEY_LOCAL_MACHINE, sTemplateKeyName, sTemplateValueName)
	msgbox sProductID
End Sub
:?:

Habe gerade festgestellt, dass es bei einem eingeschränkten Benutzerkonto nicht funktioniert. :cry:
Obwohl laut Informationen aus dem I-Net ein Lesezugriff möglich sein soll. :roll:
Software hat keinen Verstand - benutze deinen eigenen...!

Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo Jürgen,

der Code von Michael klappt bei mir, diesmal allerdings zu Hause getestet. Mein Benutzerkonto auf Arbeit ist nicht eingeschränkt. Es müsste also auch dort klappen. Das kann ich aber erst wieder am Dienstag testen, denn morgen habe ich Urlaub.
Danke für Deine Mühen. Ich hatte schon aufgegeben.

Ein schönes Pfingstwochenende wünscht
Christiana
Christiana
***
Beiträge: 62
Registriert: Di, 20.03.2007 11:41

Re: Dialoggröße anpassen

Beitrag von Christiana »

Hallo,

nun habe ich den Code von Michael auf Arbeit getestet. Er klappt auch hier.
Eine zentrale Stelle für die Bildschirmauflösung habe ich in der Registry nicht gefunden.

Christiana
Antworten