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