Formular und Zoom

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Formular und Zoom

Beitrag von gigabert »

Hallo,

ich hab da ein kleines Problem bei der Gestaltung von Formularen. Und zwar kann ich ja bei Entwürfen von neuen Formularen die Beschriftungen und Eingabefelder in der Größe und Postition anpassen. Ein Zoomen ist bei Formularen nur über die Maus möglich (STRG + Mausrad). Ich hab das nun auch schon mehrmals so verändert. Aber ich hätte nun gerne, dass ich das auch wieder auf 100% stellen kann, weiss aber nicht, wie und wo ich das machen kann. Oder wo ich sehen kann, welcher Zoom denn nun gerade eingestellt ist. Ich möchte nämlich eigentlich mehrere Formulare für eine Anwendung erstellen, die von der Gestaltung gleich sind. Irgendwie bereitet mir das so aber Probleme, da ich nicht mehr weiss, welche Ansicht denn nun "normal" ist. Kann man das irgendwo wieder resetten oder genau einstellen? Wie löst ihr das, wenn ihr mehrere Formulare gestalten wollt, die so ziemlich gleich aussehen sollen?

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

Hallo Bert,
da bin ich mal wieder....
Ich denke, das hier suchst Du.

Gruss eBayer

Function setZoom()
if ThisComponent.supportsService("com.sun.star.text.TextDocument") then
ThisComponent.CurrentController.ViewSettings.ZoomValue=100
end if
End Function
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

Hallo eBayer,

dachte schon, du wanderst zu einem anderen Forum ab... ;-) Aber hier war ja auch ein paar Tage geschlossen. Gut dass es jetzt wieder geht.

Mit deinem Code kann ich per Macro den Zoom wieder auf 100% setzen? Das müsste ich dann bei jedem Öffnen eines Formulars aufrufen, oder? Dann könnte ich zum Start eines Formulares den Zoom, die Grösse und die Position des Formulars setzen. Wie machst du das eigentlich? Gestaltest du deine Formulare alle mit 100% und schaust dann mit dem Code, dass sie auch so angezeigt werden? Weil irgendwie muss man ja überlegen, wie das alles angeordnet wird und später beim Anwender angezeigt wird.

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

Hallo Bert,
das Problem hatte ich auch, zumal sich mit jeder Bearbeitung des Formulars ohne erkennbare Regel die Größe verändert.
Über die Feststellung der Bildschirmauflösung habe wir ja bereits miteinander geschrieben.... ich habe diese in einer INI-Datei hinterlegt.

Ich habe deshalb folgendes getan: (ist umständlich, aber eine bessere Lösung habe ich nicht gefunden)
1. Das Formular optimal im EditModus ausgerichtet und mir dann vom Formular die Größe verraten lassen
Dafür habe ich ein kleines Makro geschrieben welches ich einmalig in der MainRoutine jedes Formulars aufrufe:

Sub ShowWindowSize(ThisComponent)
Dim aWindowSize As New com.sun.star.awt.Rectangle ' make a special Variable
aWindowSize = ThisComponent.CurrentController.Frame.ContainerWindow.getPosSize
msgbox aWindowSize.width ' wird bei iBreit verwendet
msgbox aWindowSize.height ' wird bei iHoch verwendet
End Sub

2. Die auf diese Weise festgestellte Größe verwende ich beim Aufruf des Formulars
oForm = container.loadComponentFromURL(sForm,"_blank",0,args())
xForm = oForm.getCurrentController().getFrame().getContainerWindow()
xForm.setPosSize( iXPos, iYPos, iBreit, iHoch , 15 )
iXPos und iYPos habe ich aufgrund der Bildschirmauflösung und der Felder iBreit und iHoch errechnet, um das Formular zu zentrieren.

3. danach kommt dann, erst in der Main-Routine des gestarteten Formulars, die Routine setZoom() zum Einsatz.
Damit wird dann das Formular in den unter 2. definerten Rahmen hineingezoomt.

Das Ergebnis: egal, ob jemand im Writer mit der ScrollMaus gezoomt hat oder auch nicht, wird immer die optimale Formulargröße mit dem optimalen Zoomfaktor hergestellt.

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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

eBayer hat geschrieben:Hallo Bert,
das Problem hatte ich auch, zumal sich mit jeder Bearbeitung des Formulars ohne erkennbare Regel die Größe verändert.
Über die Feststellung der Bildschirmauflösung habe wir ja bereits miteinander geschrieben.... ich habe diese in einer INI-Datei hinterlegt.
Hallo eBayer,

das mit dem Auslesen der Bildschirmauflösung klappt eigentlich ganz gut. Es fehlt halt nur jeweils ein Pixel pro Breite und Höhe (vielleicht ein Unterschied, ob von 0 oder von 1 angefangen wird zu zählen):

Code: Alles auswählen

Sub ScreenSize

	oDisplayAccess = CreateUnoService("com.sun.star.awt.DisplayAccess")
	oDisplay = oDisplayAccess.getByIndex(0)
	aRect = oDisplay.WorkArea
	
	iResolutionX = aRect.Width
	iResolutionY = aRect.Height

End Sub
Die Variablen für die Breite und Höhe der Bildschirmauflösung habe ich als globale Variablen abgelegt, in einem Modul, welches beim Starten als erstes ausgeführt wird. Dann kann ich von überall darauf zugreifen.

Ansonsten unterscheidet sich bei deiner Lösung nicht mehr viel zu meiner. Aber ich bin trotzdem noch etwas unzufrieden. Man merkt nämlich, dass das aufgerufene Formular erst in einer anderen Grösse, Position und Zoom angezeigt wird, welches sich dann in Sekundenbruchteilen in das gewünschte Formular umwandelt. Aber es ist eben doch noch sichtbar und als kurzes Aufflackern wahrnehmbar. Eigentlich nicht gerade optimal. Schöner wäre es, wenn es gleich so angezeigt wird, wie ich es auch haben möchte.


Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

Das könnte ein Weg sein, um das Aufflackern des Formulars beim Start zu verhindern.
Laden des Dokuments als Hidden:

Dim Props(0) As New com.sun.star.beans.PropertyValue
Props(0).Name="Hidden" : Props(0).Value=True
Stardesktop.loadComponentFromURL(url,"_blank",0,Props())

Schau mal HIER nach!
http://user.services.openoffice.org/en/ ... 20&t=11096

Habe grad keine Zeit..... kannst Du mich auf dem Laufenden halten, ob es klappt?
Beiliegend mal was zur Entspannung.... gestern voll in ooBasic programmiert.
Gruß eBayer
Dateianhänge
Schieben.odt
(11.53 KiB) 99-mal heruntergeladen
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

eBayer hat geschrieben:Das könnte ein Weg sein, um das Aufflackern des Formulars beim Start zu verhindern.
Laden des Dokuments als Hidden:

Dim Props(0) As New com.sun.star.beans.PropertyValue
Props(0).Name="Hidden" : Props(0).Value=True
Stardesktop.loadComponentFromURL(url,"_blank",0,Props())

Schau mal HIER nach!
http://user.services.openoffice.org/en/ ... 20&t=11096

Habe grad keine Zeit..... kannst Du mich auf dem Laufenden halten, ob es klappt?
Hallo eBayer,

was muss ich denn bei URL eintragen? Ich hab ja keine Datei, sondern ein internes Formular in einer Base-Anwendung, welches ich angezeigt haben möchte. Ansonsten bin ich mir nicht sicher, ob das das richtige war. Ich möchte das Formular ja nicht komplett verstecken.

Bisher hatte ich ja:

Code: Alles auswählen

Sub OpenForm(sForm)

	Dim oCurrentController

	oCurrentController = ThisDatabaseDocument.CurrentController

	oFormularSemester = oCurrentController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, sForm, False)

End Sub
Da hab ich den Formularnamen übergeben. Muss bei loadComponentFromURL nicht ein Dateiname angegeben werden? Und das "hidden" irritiert mich halt...

Gruss
Bert

P.S. Dein programmiertes Spielchen ist echt cool. Ein kleines Problemchen: die Zeitanzeige in der Titelleiste ist bei mir etwas abgeschnitten. Ansonsten ein netter kleiner Zeitvertreib so für nebenher. Muss nur schauen, dass ich da nicht hängen bleibe, da ich auch gerade viel zu viel zu tun habe. Zu allem Unglück hat sich gerade mein PC beim Einschalten mit einem Feuerwerk (Blitzen, Funken, Zischen, Knallen und stinkendem Qualm) verabschiedet. Wahrscheinlich das Netzteil. Jetzt hab ich nur noch das Notebook... :cry:
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

Hallo Bert,
so wie Du es machst, ist es schon ok - "sForm" ist also der Formularname aus der Anwendung.
Hidden bedeutet, daß das Formular zwar geladen, aber zunächst versteckt wird.
Nach meinem Verständnis müsstest Du dann in der Main-Routine des Formulars das Formular nach Abschluss aller Aktivitäten auf visible=true setzen:
thiscomponent.CurrentController.Frame.ContainerWindow.setVisible(true)

Wenn die Überlegungen so stimmen, würde damit das Flackern und das Aufzeigen des Formulars in der zunächst noch falschen Größe vermieden werden, weil das ja alles passiert, während das Formular versteckt ist. Hab das aber noch nicht probiert, aber es liest sich gut.
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

OK, ich teste das mal und melde mich dann wieder...
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

Hmm, so klappt das jedenfalls nicht. Das Formular flackert weiterhin auf. Ist das mit den Props denn so richtig?

Code: Alles auswählen

Sub OpenForm(sForm)

	Dim oCurrentController
	
	Dim Props(0) As New com.sun.star.beans.PropertyValue
	Props(0).Name="Hidden" : Props(0).Value=True

	oCurrentController = ThisDatabaseDocument.CurrentController

	oFormularSemester = oCurrentController.loadComponent(com.sun.star.sdb.application.DatabaseObject.FORM, sForm, False, Props())

End Sub
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

ok, ich probiere es auch mal.... allerdings nicht mehr heute.
Gruss 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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

OK, danke...
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

eBayer hat geschrieben:Beiliegend mal was zur Entspannung.... gestern voll in ooBasic programmiert.
Gruß eBayer
Hey, ich hatte es geschafft, aber es kam keine Meldung, Gratulation oder sonst etwas...

Gruss
Bert
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
eBayer
******
Beiträge: 556
Registriert: Do, 04.12.2008 14:33
Wohnort: Augsburg

Re: Formular und Zoom

Beitrag von eBayer »

jetzt schon..... tataaaa
unten rechts muß leer sein, wenn fertig.
Gruss eBayer
Dateianhänge
Schieben.odt
(11.53 KiB) 82-mal heruntergeladen
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
gigabert
*****
Beiträge: 203
Registriert: Di, 11.08.2009 16:06

Re: Formular und Zoom

Beitrag von gigabert »

OK, und jetzt noch eine speicherbare Rankingliste, damit meine Rekorde auch verewigt bleiben. :lol: Die Zeit ist in der Titelleiste jetzt auch bei mir wunderbar zusehen.
OpenOffice 3.1.1 unter Debian 5.0 und mit PostgreSQL 8.3
Antworten