Seite 1 von 1

[gelöst]Symbolleisten bei anderem Dokument wieder einblenden

Verfasst: Di, 24.01.2012 08:38
von jemies
Guten Morgen miteinander
Ich habe ein Standalone-Form-Dokument "form.odt", das beim Öffnen per Makro die Symbolleisten ausblendet. Nun möchte ich, dass die Symbolleisten wieder eingeblendet werden, sobald ich ein anderes Dokument öffne oder "nach vorne" in den Focus hole - während "form.odt" weiterhin ohne Symbolleisten bleibt.

Der code zum Ausblenden der Symbolleisten sieht folgendermaßen aus:
(Quelle: viewtopic.php?f=18&t=50130)

Code: Alles auswählen

sub HideBars 'Symbolleisten ausblenden
'sub __HideBars(optional n as integer) 'Symbolleisten ausblenden
   'Option aus: 1=Menü , 2=Statusleise. 4=Formsnavigationbar
    dim lmgr as object, i as integer, o as object
    
    wait 1000
   
    oDoc = ThisComponent
    if oDoc.CurrentController.isFormDesignMode() then exit sub
    lmgr = oDoc.CurrentController.Frame.LayoutManager
    if ismissing(n) then n=0 
    
    xray lmgr

    if n and &H01 then lmgr.hideElement("private:resource/menubar/menubar") 'Menü 
   if n and &H02 then lmgr.hideElement("private:resource/statusbar/statusbar")
   if n and &H04 then lmgr.hideElement("private:resource/toolbar/formsnavigationbar")
   lmgr.hideElement("private:resource/toolbar/standardbar")
   lmgr.hideElement("private:resource/toolbar/formdesign")
   lmgr.hideElement("private:resource/toolbar/formcontrols")
   lmgr.hideElement("private:resource/toolbar/textobjectbar")
   
   rem ---- (Lineale ausblenden)
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Ruler"
args1(0).Value = false

dispatcher.executeDispatch(document, ".uno:Ruler", "", 0, args1())   
end sub 
Ich vermute, ich benötige einen Eventlistener, der überprüft, wann form.odt den Focus hat und wann nicht. Hat jemand eine Idee?

Dank und Gruß
jemies

FocusListener will nicht recht...

Verfasst: Mi, 25.01.2012 01:59
von jemies
Hallo
Ich habe nun versucht, entlang der Beschreibung in "OOME 3.0", einen Listener zu erstellen. Leider gibt es keinerlei Reaktionen auf einen Fokuswechsel.

Code: Alles auswählen

REM _______________________Nicht gelöst. ersetzt durch den Gebrauch von STRG + Umschalt + "J" _____________________________________________
REM die beiden Focus-Listener müssen global sein für die Überwachung, 
REM ob die Symbolleisten ein- oder ausgeblendet werden sollen. 
REM (Nur für das SIF-Büro sollen sie ausgeblendet werden.)
		
		Global vFocusGainListener   
		Global vFocusGainBroadCast

REM Zum Start der Überwachung führen Sie dieses Makro aus.
REM Muss in die SIF-Büro-Datei eingebunden werden als Makro beim
REM "Dokument-öffnen"-Ereignis

Sub StartListeningToFocusGainEvents
  Dim sPrefix$
  Dim sService$
  sPrefix = "focus_gain_"
  sService = "com.sun.star.awt.XFocusListener"
  
  REM Das Anmeldungsobjekt zur Beobachtung der FokusÄnderung
  REM ist der CurrentController
  vFocusGainBroadCast = ThisComponent.getCurrentController
    
  'Erzeugt einen Listener zum Abfangen der FokusÄnderung-Ereignisse
  vFocusGainListener = CreateUnoListener(sPrefix, sService)
    
  'Registriert den Listener beim Dokument-Controller
  vFocusGainBroadCast.addEventListener(vFocusGainListener)
End Sub


Sub focus_gain_disposing(vEvent)
  msgbox "Entfernt den FokusÄnderung-Listener"
End Sub

Sub focus_gain_focusGained(vEvent)
  Dim vFocusGained As Object
   vFocusGained =  vEvent.source
   Print "Hurra, das Dokument ist wieder vorne"    		
End Sub

Sub focus_gain_focusLost(vEvent)
  Dim vFocusLost As Object
   vFocusLost = vEvent.source
   Print "Seufz, ein anderes Dokument ist jetzt vorne "
End Sub

REM _______________________Nicht gelöst. ersetzt durch den Gebrauch von STRG + Umschalt + "J" _____________________________________________

Weiß wohl jemand, wo der Fehler steckt?

Re: Symbolleisten bei anderem Dokument wieder einblenden

Verfasst: Mi, 25.01.2012 02:54
von jemies
Und hier ist die Lösung:

Quelle: http://www.oooforum.org/forum/viewtopic.phtml?t=72577

Code: Alles auswählen

sub IMGCAT_maxWindow
dim document
dim dispatcher

document = ThisComponent.CurrentController.Frame
ThisComponent.lockControllers

dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FullScreen"
args1(0).Value = true

dispatcher.executeDispatch(document, ".uno:FullScreen", "", 0, args1())

ThisComponent.UnlockControllers

doc = Stardesktop.getCurrentComponent()
frame = doc.CurrentController.Frame
lmgr = frame.LayoutManager
lmgr.setVisible(False)

end sub 
Funktioniert wunderbar.
Gute Nacht,
jemies