Seite 1 von 1
Gelöst! aktives Formular per Makro finden
Verfasst: Mi, 27.05.2009 23:50
von eBayer
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
Re: aktives Formular per Makro finden
Verfasst: Do, 28.05.2009 00:31
von turtle47
Hallo eBayer,
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.
Re: aktives Formular per Makro finden
Verfasst: Do, 28.05.2009 00:49
von turtle47
Hi,
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
Gut's Nächtle.
Jürgen
Gelöst! Re: aktives Formular per Makro finden
Verfasst: Do, 28.05.2009 14:54
von eBayer
Danke Jürgen,
das war die Lösung..... ich habe einfach nicht den richtigen Ansatz gefunden.
Klasse!
Gruß eBayer