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
Zugriff auf anderes Formular von einem Formular aus
Moderator: Moderatoren
Re: Zugriff auf anderes Formular von einem Formular aus
- Dateianhänge
-
- Formtest.odb
- Formtest.odb enthält nur zwei Formulare!
- (12.6 KiB) 130-mal heruntergeladen
Re: Zugriff auf anderes Formular von einem Formular aus
Hallo zusammen,
Beschreibung um "Formtest.odb" selbst zu testen
(Damit ich beim nächten mal nicht so hirrrrnen muß)
Nach dem Download
Datei öffnen
Extas -- Macros --- Macros verwalten --- OOo Basic --- Formtest.odb --- Neu
Code von oben einfügen.
sDBUrl = ConvertToUrl( ......) an den eigenen Path anpassen
Formular --- Formular1 --- Bearbeiten
Rechte Maustaste bei Schaltfläche "Formular 2 öffnen" --- Kontrollfeld --- Ereignisse --- Maustaste losgelassen --- ( über Schaltfläche "...") anpassen
das selbe bei "Eingabefeld aus Formular 2 anzeigen"
Das weiß zwar jeder aber trozdem "speichern".
( Ich selbst hab eine Std. weitere Tests gemacht und wurde dann auch mal wieder an den Anfang zurückgeschmissen.)
Gruß PerRork
Beschreibung um "Formtest.odb" selbst zu testen
(Damit ich beim nächten mal nicht so hirrrrnen muß)
Nach dem Download
Datei öffnen
Extas -- Macros --- Macros verwalten --- OOo Basic --- Formtest.odb --- Neu
Code von oben einfügen.
sDBUrl = ConvertToUrl( ......) an den eigenen Path anpassen
Formular --- Formular1 --- Bearbeiten
Rechte Maustaste bei Schaltfläche "Formular 2 öffnen" --- Kontrollfeld --- Ereignisse --- Maustaste losgelassen --- ( über Schaltfläche "...") anpassen
das selbe bei "Eingabefeld aus Formular 2 anzeigen"
Das weiß zwar jeder aber trozdem "speichern".
( Ich selbst hab eine Std. weitere Tests gemacht und wurde dann auch mal wieder an den Anfang zurückgeschmissen.)
Gruß PerRork