Seite 1 von 1
Fenster Name und Form ermitteln und aktiv schalten
Verfasst: So, 28.12.2008 09:18
von lxxfanbase
Hallo,
könnt ihr mir helfen:
Ich möchte wissen ob ein Formular geladen ist und wenn aktiv setzen.
Habe folgendes gefunden:
Sub Documents_alle( )
Dim oDesktop As Object, oDocs As Object,
Dim oDoc As Object, oComponents As Object
Dim i as Integer
i = 0
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
Do While oDocs.hasMoreElements()
oDoc = oDocs.nextElement()
Msgbox namen vom Fenster ausgeben und setzen z. bsp. rechnungen??
oDoc.CurrentController.Frame.getContainerWindow().setFocus
i = i + 1 'Counter
Loop
'MsgBox i + "Components are currently open"
End Sub
ich danke euch für eure Hilfe
mfg
Georg
Re: Fenster Name und Form ermitteln und aktiv schalten
Verfasst: Sa, 03.01.2009 18:34
von sarotti
Hallo Georg
...schau doch mal hier.
viewtopic.php?f=18&t=21692
Gruss
sarotti
Re: Fenster Name und Form ermitteln und aktiv schalten
Verfasst: Sa, 03.01.2009 19:58
von lxxfanbase
Hallo,
Danke euch zuerst mal für eure Hilfe.
Aber ich kann die Funktion noch nicht aufrufen.
Was mache ich noch falsch:
Es soll das fenster Haupteingabekontakte in Base aufgerufen werden
formhaupteingabe(Fensterwechseln()) geht nicht.
Bitte helft mir nochmal.
Dass ist wirklich ein klasse Forum.
mfg
Georg
Re: Fenster Name und Form ermitteln und aktiv schalten
Verfasst: So, 04.01.2009 22:04
von sarotti
Hallo Georg,
ein Datenbankformular ist mit einem Titel versehen, der sich wie folgt zusammensetzt:
[DBName].odt : [Formulartitel] (schreibgeschützt)
Somit mußt Du, um den Namen eines geöffneten Formulars einer Datenbank auszulesen erst einmal den Namen "isolieren":
Code: Alles auswählen
Sub Titel_aus_DB_Form
DIM dbName as String : dbName="TEST_DB"
DIM sFormName as String : sFormName="Formular1"
DIM sFormName, sDocTitel as String
DIM iDbName, iFormName as integer
DIM
sdocTitel=ThisComponent.Title
iDbName=len(dbName)
iFormName=len(sFormName)
sFormName=mid(sdocTitel,iDbName+9,iFormName)
msgBox sFormName
End Sub
So, nun kannst Du mit Hilfe der anderen Codeteile, die Du bereits hast das Formular aus den geöffneten Dokumenten heraussuchen. Bei nicht vorhanden muss es eben neu geöffnet werden...
Dazu kannst Du den folgenden Code benutzen:
Code: Alles auswählen
SUB OPEN_Formular_aus_Datenbank
DIM str_dbname AS STRING: str_dbname = "TEST_DB" 'Name der Datenbank
DIM str_frmname AS STRING: str_frmname = "Formular1" 'Name des Formulars
REM ***Datenbankkontext erzeugen
DatabaseContext = createUnoService("com.sun.star.sdb.DatabaseContext")
REM *** Prüfung: Ist die erwartete Datenbank angemeldet?
IF DatabaseContext.hasByName(str_dbname)=false THEN
MSGBOX "Datenbank nicht gefunden: " & str_dbname: EXIT SUB
END IF
Datenquelle = DatabaseContext.getByName(str_dbname)
REM *** Übergabe der Parameter zum Öffnen
DIM args(2) AS NEW com.sun.star.beans.PropertyValue
args(1).name = "OpenMode"
args(1).value = "open"
args(0).name = "ActiveConnection"
args(0).value = Datenquelle.getConnection("","")
args(2).Name = "MacroExecutionMode"
args(2).Value = 4 'entspricht "ALWAYS_EXECUTE"
DIM obj_Forms AS OBJECT: obj_Forms = Datenquelle.DataBaseDocument.getFormDocuments
REM *** Grösse (vom Bildschirmrand aus gesehen) und Position des zu öffnenden Formulars definieren
posx=350
posy=100
sizeX=600
sizeY=800
REM *** Öffnen des Formulars
oForm=obj_Forms.loadComponentFromURL(str_frmname, "_self", 0, args())
With oForm.getCurrentController().getFrame().getContainerWindow()
.setPosSize(posx, posy, sizeX, sizeY, com.sun.star.awt.PosSize.POSSIZE)
End With
END SUB
Gruss
sarotti
Re: Fenster Name und Form ermitteln und aktiv schalten
Verfasst: Mo, 05.01.2009 00:03
von lxxfanbase
Hallo an alle,
Danke euch sehr für die Hilfe.
Jetzt hab ichs raus mit dem Fenster öffnen dank eurer Hilfe.
mfg
Georg