[Form] Formular öffnen, Grösse einstellen

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

Moderator: Moderatoren

Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

[Form] Formular öffnen, Grösse einstellen

Beitrag 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 
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
datensurfer
**
Beiträge: 49
Registriert: Mo, 15.05.2006 16:07
Kontaktdaten:

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

Beitrag 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?
chrisse111179
Beiträge: 2
Registriert: So, 12.10.2008 17:21

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

Beitrag 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
Antworten