Fenster aktivieren/umschalten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Fenster aktivieren/umschalten

Re: Fenster aktivieren/umschalten

von steffn » Do, 25.12.2008 01:04

na Gott sei dank habe ich den Code nicht gepostet!
peinlichen Fehler eingebaut
tja, copy-and-paste will geübt sein :mrgreen:

dass ich mehr als einen ganzen Tag pausiert habe, war bestimmt ganz gut

danke, dass Du noch mal explizit geschrieben hast, dass das Ding genau so und nicht anders funktioniert

Re: Fenster aktivieren/umschalten

von komma4 » Mi, 24.12.2008 10:42

steffn hat geschrieben: einer anderen Datei.odt in den Vordergrund springt. Ich habe habe die Datei durch Basic öffnen lassen, kann 'setactivesheet' und 'select'
Datei.odt <> setActiveSheet
(jetzt mal unabhängig davon, dass OOo sich [zumindest unter Linux] nicht nach Dateiendungen richtet, sondern die zu öffnende Komponente aus dem Code der Datei selbst bestimmt)


Egal: wenn Du das Objekt der Datei beim Öffnen hast, dann verwende es (anstelle von oDoc) in der Codezeile von Jürgen.

Code: Alles auswählen

oDoc.CurrentController.Frame.getContainerWindow().setFocus()
Wenn das nicht funktioniert, dann musst Du Deinen Code mit XRay genauer untersuchen: eine Ferndiagnose ist mit einem Satz "aktivieren das Fenster der Datei, in der der Code läuft" nicht möglich... (da musst Du schon den ganzen Code posten, damit wir die fehlerhafte Stelle sehen können).

Re: Fenster aktivieren/umschalten

von steffn » Di, 23.12.2008 14:32

Hallo Ihr,

ich möchte gerne, dass das Fenster einer anderen Datei.odt in den Vordergrund springt. Ich habe habe die Datei durch Basic öffnen lassen, kann 'setactivesheet' und 'select', schaffe es aber leider nicht, dass mir das auch gezeigt wird, wenn sich das Fenster im Hintergrund befindet. Alle '.setfocus'-Versuche aktivieren das Fenster der Datei, in der der Code läuft.
Ich schätze, dass zwischen den Klammern hinter 'getcontainerwindow' ein guter Platz für ein Objekt ist, oder vielleicht 'currentcontroller' oder 'frame' geändert werden kann. Die Suche im Forum nach "setfocus" und nach "vordergrund" hat mir leider nichts offensichtlich brauchbares gezeigt.
:o

Re: Fenster aktivieren/umschalten

von sarotti » Sa, 20.12.2008 17:04

Hallo Jürgen,

ja, du hast absolut recht... die Bibliothek sollte man schon vorher aufrufen für die Funktion "FileNameoutofPath" (hatte ich in der vorherigen Versuchsversion gemacht ... :?)

Aber die eigentliche Hilfe war Dein Hinweis mit ...

Code: Alles auswählen

oDoc.CurrentController.Frame.getContainerWindow().setFocus
Vielen Dank, fuktioniert einwandfrei!!! :wink:

....das war genau das was ich gesucht hatte

Gruss
sarotti

Re: Fenster aktivieren/umschalten

von turtle47 » Sa, 20.12.2008 14:39

Hallo Sarotti,

wenn du nach "FileN = FileNameoutofPath(datei)" eine Msgbox setzt dann wirst Du fesstellen das diese immer leer bleibt.

Code: Alles auswählen

FileN = FileNameoutofPath(datei)
	msgbox FileN
Also es kommt nichts an!

Du musst am Anfang Deines Code folgende Library aufrufen:

Code: Alles auswählen

GlobalScope.BasicLibraries.LoadLibrary("Tools")
Das Fenster zu Deinem Dokument bekommst Du mit:

Code: Alles auswählen

oDoc.CurrentController.Frame.getContainerWindow().setFocus
Hier der komplette Code:

Code: Alles auswählen

sub FensterWechseln
	GlobalScope.BasicLibraries.LoadLibrary("Tools")
	GesuchteDatei = "HauptformularDB.odt"
	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)
    if FileN = GesuchteDatei then
    oDoc.CurrentController.Frame.getContainerWindow().setFocus
       EXIT DO
    end if
  LOOP
end sub
Hilft das weiter?

Jürgen

Fenster aktivieren/umschalten

von sarotti » Sa, 20.12.2008 13:22

Hallo ihr,

heute habe ich wieder einmal keine Idee und die Recherche im Forum hat mich zu Dannenhöfer (http://www.dannenhoefer.de/faqstarbasic ... terwaehlen) geführt. Leider auch hier ohne Erfolg.

Es geht um Folgendes:

Ich möchte zwischen mehreren geöffneten Fenstern hin- und herwechseln können. D.h. es wird geprüft, ob das gesuchte Dokument geöffnet ist und dann zu diesem gewechselt. Im Prinzip nicht besonders schwer, die Fenster zu identifizieren. Aber wie wird das gewünschte Fenster aktiviert, d.h. aktiv in den Vordergrund geschaltet?

Hier erst mal mein Code (...bis zu diesem Problem):

Code: Alles auswählen

sub FensterWechseln

  GesuchteDatei="HauptformularDB.odt"
  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)
    
    if FileN=GesuchteDatei then 
	    myFenster=oDoc
	    EXIT DO
    end if
  LOOP

REM **** diese Möglichkeiten habe ich alle erfolglos probiert....
'starDesktop.isTop(myFenster)=true
'starDesktop.isActive(myFenster)=true
'StarDesktop.setActiveFrame(myFenster)
'StarDesktop.currentComponent=myFenster

end sub
... wer hat hier einen Ansatz für mich?

Danke

Gruss
sarotti

Nach oben