Seite 1 von 1

[Form] Formular öffnen, Grösse einstellen

Verfasst: Di, 05.02.2008 16:00
von komma4
In letzter Zeit mehrfach nachgefragt, deshalb...

Hier ein Stück Code, welches aus einer BASE-Datei ein benanntes Formular öffnet und dessen Grösse einstellt, zuletzt den Cursor in einem Kontrollfeld aktivieren, sodass manN loslegen kann.

Have fun - ich denke, dass kann der ein oder die andere gebrauchen.

Code: Alles auswählen

Sub openBaseFormAndSize
' http://www.pitonyak.org/database/AndrewBase.odt
   Dim pProp(1) As New com.sun.star.beans.PropertyValue
   sURL = ConvertToURL("/zentrale/daten/ooo/OpenOffice.odb")
   oDoc = starDesktop.loadComponentFromURL(sURL,"_blank",0,Array())
   oForms = oDoc.getFormDocuments()
   'oReps = oDoc.getReportDocuments() 
   oAConnection = oDoc.DataSource.getConnection("","")
   'set properties
   pProp(0).Name = "ActiveConnection"
   pProp(0).Value = oAConnection
   pProp(1).Name = "OpenMode"
   pProp(1).Value = "open" ' OR: openDesign
   ' load the form: TargetFrameName and SearchFlags aren't used

   oFormulario = oForms.loadComponentFromURL("OOo Tipps","_blank",0,pProp())

' 2008-02-05 
   With oFormulario.getCurrentController().getFrame().getContainerWindow()
   	.setPosSize( .PosSize.x, .PosSize.y , 800, 600 , com.sun.star.awt.PosSize.SIZE )
   End With 
  ' Focus in ein Kontrollfeld
   oFeld = oFormulario.DrawPage.Forms(0).getByName( "fmtid" )
   oFormulario.getCurrentController().getControl( oFeld ).setFocus()

End Sub 

Re: [Form] Formular öffnen, Grösse einstellen

Verfasst: Mi, 11.06.2008 11:39
von datensurfer
hey,

das ist gut und funktioniert.

Ich suche aktuell nach einer Möglichkeit innerhalb der geöffneten Base-DB ein anderes Formular (z.B. Bericht) zu öffnen.
Das Makro bringt mich dem Ziel näher ABER es öffnet jeweils ein weiteres mal die schon geöffnete Datenbank, was ja nicht nötig ist da schon geöffnet.

Hat jemand eine Idee was ich wie anpassen muss um NUR ein Formular zu öffnen?

Re: [Form] Formular öffnen, Grösse einstellen

Verfasst: Do, 16.10.2008 22:59
von chrisse111179
Hallo,

so funtioniert es bei mir ohne dass die Datenbank nochmal geöffnet wird:

Code: Alles auswählen

Sub NeuerKunde
' http://www.pitonyak.org/database/AndrewBase.odt
   Dim pProp(1) As New com.sun.star.beans.PropertyValue
   Dim dbContext As Object
   dbContext = createUnoService("com.sun.star.sdb.DatabaseContext")
   oDataSource = dbContext.GetByName("Arbeitszeiterfassung"
   oForms = oDataSource.DatabaseDocument.FormDocuments
   'oReps = oDoc.getReportDocuments()
   oAConnection = oDataSource.getConnection("","")
   'set properties
   pProp(0).Name = "ActiveConnection"
   pProp(0).Value = oAConnection
   pProp(1).Name = "OpenMode"
   pProp(1).Value = "open" ' OR: openDesign
   ' load the form: TargetFrameName and SearchFlags aren't used

   oFormulario = oForms.loadComponentFromURL("Neuer_Kunde","_blank",0,pProp())

' 2008-02-05
   With oFormulario.getCurrentController().getFrame().getContainerWindow()
      .setPosSize( .PosSize.x, .PosSize.y , 1024, 600 , com.sun.star.awt.PosSize.SIZE )
   End With
  ' Focus in ein Kontrollfeld
   oFeld = oFormulario.DrawPage.Forms(0).getByName( "Auswahl Anrede" )
   oFormulario.getCurrentController().getControl( oFeld ).setFocus()

End Sub
Hoffe ich konnte helfen.
Grpße
Chrisse