Wie kann ich ein Fenster von hidden wieder sichtbar machen?

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

Moderator: Moderatoren

geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Wie kann ich ein Fenster von hidden wieder sichtbar machen?

Beitrag von geimist »

Hallo zusammen,

ich öffne in Base alle Formulare von einem Startformular aus nach folgendem Muster:

Code: Alles auswählen

Sub OPENFORM

Dim Context AS Object
Dim Conn As Object
Dim DB As Object
Dim FormDoc As Object
Dim Args(1) As New com.sun.star.beans.PropertyValue
Dim FormName As String
       
FormName = "FORMULAR"
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
DB=Context.getByName("DB")
Conn=DB.getconnection("","")
Args(0).Name="ActiveConnection" : Args(0).Value=Conn
Args(1).Name="OpenMode" : Args(1).Value="open"
FormDoc=DB.DatabaseDocument.FormDocuments.loadComponentFromURL(FormName,"_self",2,Args) REM << BASIC-Laufzeitfehler.
FormDoc.CurrentController.Frame.ContainerWindow.setFocus()
End Sub

Jetzt möchte ich allerdings das geöffnete Formular versteckt öffnen um anschließend durch das Startereignis ausgelöst im neu geöffnetem Formular die Größe zu ändern sowie die Symbolleisten auszublenden. Erst danach möchte ich das neue Formular sichtbar schalten.

Wie kann ich die Sichtbarkeit steuern? (Alle anderen Aufgaben sind bereits implementiert) Am einfachsten wäre ja die Sichtbarkeit über visible=false zu steuern, aber das greift ja erst nach dem Öffnen des Fensters (selbst wenn ich das visible schon in das obige Makro einbinde), und genau diesen Effekt möchte ich vermeiden. Nicht sichtbar laden kann man wohl mit hidden - aber wie und wie kann man es dann wieder sichtbar schalten?

Vielen Dank schon mal.
Zuletzt geändert von geimist am So, 21.06.2009 23:57, insgesamt 1-mal geändert.
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
geimist
****
Beiträge: 191
Registriert: Fr, 15.02.2008 16:10

Re: Baseformular versteckt öffnen

Beitrag von geimist »

versteckt öffnen kann ich das Formular inzwischen so (nehme ich zumindest an, da ich es ja nicht sehe, aber es kommt auch kein Fehler):

Code: Alles auswählen

Sub xxxTESTxxx_hidden_OEFFNEN

Dim Context AS Object
Dim Conn As Object
Dim DB As Object
Dim FormDoc As Object
Dim Args(2) As New com.sun.star.beans.PropertyValue
Dim FormName As String
       
FormName = "xxxTESTxxx"
Context=CreateUnoService("com.sun.star.sdb.DatabaseContext")
DB=Context.getByName("DB")
Conn=DB.getconnection("","")

Args(0).Name="ActiveConnection"
Args(0).Value=Conn
Args(1).Name="OpenMode"
Args(1).Value="open"
Args(2).Name="Hidden"
Args(2).Value=true

FormDoc=DB.DatabaseDocument.FormDocuments.loadComponentFromURL(FormName,"_self",2,Args())

End Sub
Über das Startereigniss blende ich dann über folgenden Code die Symbolleisten aus und ändere die Framegröße:

Code: Alles auswählen

sub SYMBOLLEISTEN_AUSBLENDEN 'Hoehe 700 px

' exit Sub
'	Menuleiste ausblenden:
	Dim oDoc, oLayout, oGr, oWin As Object 'oEditWin, oEGr oFrame,
	Dim TBar As String
	
	lClosed = false
	oWin = ThisComponent.getCurrentController().getFrame().getContainerWindow()
	oGr = oWin.getPosSize() 'urspruengliche Fenstergroesse auslesen
	'Position und Größe ändern:
	ThisComponent.getCurrentController().getFrame().getContainerWindow().setPosSize(oGr.X, oGr.Y, oGr.width, 700, com.sun.star.awt.PosSize.HEIGHT) 
	oDoc = ThisComponent.CurrentController.Frame 'Menubar ausblenden
	oLayout = oDoc.LayoutManager
	TBar="private:resource/menubar/menubar"
	
	If oLayout.IsElementVisible(TBar) Then oLayout.hideElement(TBar)

	ThisComponent.CurrentController.Frame.LayoutManager.setVisible(false) ' Symbolleisten ausblenden
	ThisComponent.getCurrentController().getFrame().getContainerWindow().setFocus() 'Fenster in den Vordergrund setzten

End Sub
Greift das Startereigniss eigentlich, wenn man ein Dokument hidden öffnet, und wenn ja, wie setze ich hier hidden auf false???
(Meine Frage schließt weniger auf ein Problem als mehr auf eine Wissenslücke :? )
Gruß
Stephan

LibreOffice 5.3 - MAC OS/X 10.11
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Wie kann ich ein Fenster von hidden wieder sichtbar mach

Beitrag von MikeRo »

Ich habe das gleiche Problem

Ich öffne ein Dokument versteckt, mache einige Datenbankabfragen etc. Nur keine ahnung wie ich es am Ende wieder sichtbar bekomme.

Code: Alles auswählen

Sub Dokument
   url=converttourl("Z:\Programme\Vorlagen für Makros\Vorlage.ods")
   Dim DocProps(1) As New com.sun.star.beans.PropertyValue
   DocProps(0).Name = "AsTemplate"
   DocProps(0).Value = True
   DocProps(1).Name = "Hidden"
   DocProps(1).Value = True
   oDoc = StarDesktop.loadComponentFromURL(url,"_blank", 0, DocProps)
   oDoc.lockControllers   
End Sub 
Ich habe etwas gegoogelt, da wurde gesagt man solle anstatt von Hidden, Minimized nehmen. Das geht auch und das Dokument ist auch nicht zu sehen, aber wie bekomme ich es am ende wieder Maximiert?
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Benutzeravatar
MikeRo
****
Beiträge: 153
Registriert: Mi, 20.01.2010 10:16

Re: Wie kann ich ein Fenster von hidden wieder sichtbar mach

Beitrag von MikeRo »

Und hier die Lösung des Problems :)

einfach an der Stelle, an der das durch das Makro bearbeitete Dokument wieder sichtbar gemacht werden soll diese Zeile einfügen

Code: Alles auswählen

oDoc.getCurrentController.getFrame.getContainerWindow().setVisible(true)
LG
Mike
OpenOffice 3.3 & postgresql-sdbc-driver 0.7.6b
Windows XP Professional SP3 x86
Antworten