Re: Zugriff auf anderes Formular von einem Formular aus
Verfasst: Mo, 08.12.2008 12:45
Hier sind die Programmteile um das Problem zu lösen. Dahinter steht eine Datenbank die zunächst nur zwei Formulare enthält, es geht nur darum zu zeigen wie man das Problem lösen kann.
Ablauf:
Nach starten von OO Macro Main starten, Formular 1 wird geöffnet
Anklicken der Schaltfläche öffnet Formular 2
Eingabefeld in Formular 2 füllen
Anklicken der Schaltfläche in Formular 1 zeigt den Inhalt aus Formular 2 in MsgBox
Viel Vergnügen
REM ***** BASIC *****
Option Explicit
Global oDBDok as Object ' Datenbankobjekt
Global oDBVer as Object ' Datenbankverbindung
Global oDBCon as Object ' Forms-Container der Datenbank
Global oForm1 As Object
Global oForm2 As Object
Sub Main
Dim sDBUrl as String ' URL der Datenbank
Dim oBaseContext
sDBUrl = ConvertToUrl("G:/OOP221/Dokumente/Formtest/Formtest.odb")
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDBDok = oBaseContext.getByName(sDBUrl)
oDBVer = oDBDok.getConnection("", "")
oDBCon = oDBDok.DataBaseDocument.getFormDocuments()
oForm1 = OeffneForm("Formular1")
End Sub
Sub FormOeffnen(oEvent as variant)
Dim sButton as String
sButton = oEvent.Source.Model.Name ' sButton ist der Name der auslösenden Schaltfläche
select case sButton
case "F001B01"
oForm2 = OeffneForm("Formular2")
case else
msgbox "Der Schaltfläche ist kein Formular zugeordnet"
end Select
End Sub
Function OeffneForm(sFormName as string) as variant
Dim args(1) As New com.sun.star.beans.PropertyValue
Dim oForm as Object
args(0).Name = "ActiveConnection"
args(0).Value = oDBVer
args(1).Name = "OpenMode"
args(1).Value = "open"
oForm = oDBCon.loadComponentFromURL(sFormName,"_blank",0,args())
OeffneForm() = oForm
End Function
Sub ZeigeTextFeld
Dim ctl As Object
ctl = oForm2.DrawPage.Forms.GetByIndex(0).GetByName("TextBox")
msgbox ctl.text
End Sub
Ablauf:
Nach starten von OO Macro Main starten, Formular 1 wird geöffnet
Anklicken der Schaltfläche öffnet Formular 2
Eingabefeld in Formular 2 füllen
Anklicken der Schaltfläche in Formular 1 zeigt den Inhalt aus Formular 2 in MsgBox
Viel Vergnügen
REM ***** BASIC *****
Option Explicit
Global oDBDok as Object ' Datenbankobjekt
Global oDBVer as Object ' Datenbankverbindung
Global oDBCon as Object ' Forms-Container der Datenbank
Global oForm1 As Object
Global oForm2 As Object
Sub Main
Dim sDBUrl as String ' URL der Datenbank
Dim oBaseContext
sDBUrl = ConvertToUrl("G:/OOP221/Dokumente/Formtest/Formtest.odb")
oBaseContext = CreateUnoService("com.sun.star.sdb.DatabaseContext")
oDBDok = oBaseContext.getByName(sDBUrl)
oDBVer = oDBDok.getConnection("", "")
oDBCon = oDBDok.DataBaseDocument.getFormDocuments()
oForm1 = OeffneForm("Formular1")
End Sub
Sub FormOeffnen(oEvent as variant)
Dim sButton as String
sButton = oEvent.Source.Model.Name ' sButton ist der Name der auslösenden Schaltfläche
select case sButton
case "F001B01"
oForm2 = OeffneForm("Formular2")
case else
msgbox "Der Schaltfläche ist kein Formular zugeordnet"
end Select
End Sub
Function OeffneForm(sFormName as string) as variant
Dim args(1) As New com.sun.star.beans.PropertyValue
Dim oForm as Object
args(0).Name = "ActiveConnection"
args(0).Value = oDBVer
args(1).Name = "OpenMode"
args(1).Value = "open"
oForm = oDBCon.loadComponentFromURL(sFormName,"_blank",0,args())
OeffneForm() = oForm
End Function
Sub ZeigeTextFeld
Dim ctl As Object
ctl = oForm2.DrawPage.Forms.GetByIndex(0).GetByName("TextBox")
msgbox ctl.text
End Sub