Formular und Zoom

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Formular und Zoom

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 23:09

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.

Re: Formular und Zoom

von eBayer » Di, 13.10.2009 17:08

jetzt schon..... tataaaa
unten rechts muß leer sein, wenn fertig.
Gruss eBayer
Dateianhänge
Schieben.odt
(11.53 KiB) 83-mal heruntergeladen

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 16:02

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

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 11:22

OK, danke...

Re: Formular und Zoom

von eBayer » Di, 13.10.2009 11:19

ok, ich probiere es auch mal.... allerdings nicht mehr heute.
Gruss eBayer

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 11:09

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

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 10:44

OK, ich teste das mal und melde mich dann wieder...

Re: Formular und Zoom

von eBayer » Di, 13.10.2009 10:31

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

Re: Formular und Zoom

von gigabert » Di, 13.10.2009 10:16

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:

Re: Formular und Zoom

von eBayer » Mo, 12.10.2009 21:38

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) 101-mal heruntergeladen

Re: Formular und Zoom

von gigabert » Mo, 12.10.2009 20:45

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

Re: Formular und Zoom

von eBayer » Mo, 12.10.2009 19:42

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

Re: Formular und Zoom

von gigabert » Mo, 12.10.2009 17:50

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

Re: Formular und Zoom

von eBayer » Mo, 12.10.2009 17:20

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

Formular und Zoom

von gigabert » Mo, 12.10.2009 15:20

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

Nach oben