Hallo, vielleicht hat ja einer eine Idee..... leider habe ich per Google nicht das passende gefunden.
Ich suche eine Möglichkeit, in einer Base-Anwendung einem bereits geöffneten Formular aus mehreren geöffneten per Makro den Focus zu geben. Irgendetwas wie: getActiveForm()
Hintergrund ist, daß meine Anwender Formulare iconisieren und dann versuchen, das gleiche nochmals zu öffenen. Das führt unter Umständen zu fehlerhaften Resultaten, insbesondere, wenn Filterbedingungen im Spiel sind.
Nun möchte ich per Makro herausfinden, ob ein entsprechendes Formular bereits aktiv ist, damit ich ihm dann nur noch den Fokus geben brauche..
Danke für möglichst zahlreiche Antworten.
Gruß eBayer
Gelöst! aktives Formular per Makro finden
Moderator: Moderatoren
Gelöst! aktives Formular per Makro finden
Zuletzt geändert von eBayer am Do, 28.05.2009 14:57, insgesamt 1-mal geändert.
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Re: aktives Formular per Makro finden
Hallo eBayer,
hilft Dir folgender Code weiter:
?
Viel Erfolg.
Jürgen
Edit: Wer lesen kann ist klar im Vorteil.
Mit dem Code wird ja nur der Focus auf das Formular gesetzt und nicht maximiert.
Vielleicht kann den Code ja trotzdem jemand brauchen.
hilft Dir folgender Code weiter:
Code: Alles auswählen
sub FensterWechseln
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oDesktop As Object, oDocs As Object
Dim oDoc As Object, oComponents As Object
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
DO WHILE oDocs.hasMoreElements()
ON ERROR resume next
oDoc = oDocs.nextElement()
datei= odoc.geturl()
FileN = FileNameoutofPath(datei)
'xray oDoc
if FileN = "private:object" and oDoc.title = "Deine_Datei.odb : Deine_Tabelle (schreibgeschützt)" then
oDoc.CurrentController.Frame.getContainerWindow().setFocus
EXIT DO
end if
LOOP
end sub
Viel Erfolg.
Jürgen
Edit: Wer lesen kann ist klar im Vorteil.
Mit dem Code wird ja nur der Focus auf das Formular gesetzt und nicht maximiert.

Vielleicht kann den Code ja trotzdem jemand brauchen.
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Re: aktives Formular per Makro finden
Hi,
hier der vervollständigte Code mit Hilfe diese Threads:
Gut's Nächtle.
Jürgen
hier der vervollständigte Code mit Hilfe diese Threads:

Code: Alles auswählen
sub FensterWechseln
GlobalScope.BasicLibraries.LoadLibrary("Tools")
Dim oDesktop As Object, oDocs As Object
Dim oDoc As Object, oComponents As Object
oComponents = StarDesktop.getComponents()
oDocs = oComponents.createEnumeration()
DO WHILE oDocs.hasMoreElements()
ON ERROR resume next
oDoc = oDocs.nextElement()
datei= odoc.geturl()
FileN = FileNameoutofPath(datei)
'xray oDoc
if FileN = "private:object" and oDoc.title = "Deine_Datei.odb : Dein_Formular (schreibgeschützt)" then
oDoc.CurrentController.Frame.getContainerWindow().setFocus
dim vFrame as Object
dim vWindow as Object
dim vRect as Object
dim intHeight as Integer
dim intWidth as Integer
dim intXPos as Integer
dim intYPos as Integer
vFrame = StarDesktop.getCurrentFrame()
vWindow = vFrame.getContainerWindow()
vRect = vWindow.getPosSize()
intXPos=vRect.X
intYPos=vRect.Y
intHeight=700
intWidth=1024
oDoc.CurrentController.Frame.getContainerWindow().setPosSize(intXPos, intYPos, intWidth, intHeight, 15)
EXIT DO
end if
LOOP
end sub
Jürgen
Software hat keinen Verstand - benutze deinen eigenen...!
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Win 7 SP1/ LibreOffice 3.4.2 OOO340m1 (Build:203) / Firefox 15.0.1 / Notebook ASUS K70IO 64 Bit-Betriebssytem
Gelöst! Re: aktives Formular per Makro finden
Danke Jürgen,
das war die Lösung..... ich habe einfach nicht den richtigen Ansatz gefunden.
Klasse!
Gruß eBayer
das war die Lösung..... ich habe einfach nicht den richtigen Ansatz gefunden.
Klasse!
Gruß eBayer
Intel(R) Core(TM)2 Quad CPU Q8200 @ 2.33GHz mit 4 GB Memory (3,2 GB aktiv)
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008
Vista Home Premium 32 Bit
openOffice 3.1.1 mit Sun Report Builder 1.1.0 und MySql 5.1
Hauptinteresse ooBase seit 12.2008