Regina Henschel schrieb am 05.09.2018 um 13:58:
> Hi Bernd,
> 
> Bernd Obermayr schrieb am 05-Sep-18 um 12:36:
>> Hi ich versuche gerade in Draw per Makro eine Ebene zu sperren
>>
>> ------------8<----------------
>> Sub EbeneSperren(sName As string)
>> Dim oDoc as Object, oEbenen as Object
>> Dim oEbene as Object
>>
>> oDoc = ThisComponent
>> oEbenen = oDoc.getLayerManager()
>>      if oEbenen.hasByName(sName) then
>>        oEbene = oEbenen.getByName(sName)
>>        oEbene.IsPrintable("IsLocked", true)
> 
> Du kannst in der APi https://api.libreoffice.org/docs/idl/ref/index.html 
> nach "Layer" suchen und dann rechts oben auf "List all members" klicken. 
> Das gibt eine kompakte Übersicht. In diesem Fall würdest du sehen, dass 
> das Setzen über die allgemeine "setPropertyValue" erfolgt. Aber wir sind 
> ja in Basic, das die abkürzende Schreibweise erlaubt bei Properties erlaubt.
> 
>>        'oEbene.IsLocked = true 'geht auch nicht
> 
> Doch genau das funktioniert. Aber s.u.
> 
>>        'Mri oEbene
>>      End if
>> End Sub
>> -------8<------------
>>
>> Das funktioniert nicht, keine Statusänderung. Es gibt keine Fehlermeldung.
>> Was ist da los? Ist IsLocked evtl. readonly? Ich habe dazu keinen Hinweis
>> gefunden (SDK und Websuche)
> 
> Das Problem ist, dass die Eigenschaft zwar gesetzt wird, aber die 
> LayerTabBar nicht automatisch aktualisiert wird. Ich benutze dazu 
> folgendes [VPL = visible/printable/locked]
> 
> sub UpdateLayerTabBar
> Rem Der Layer erhält die VPL Eigenschaften, aber die LayerTabBar
> Rem wird nicht automatisch aktualisiert
> Rem Trick: ActiceLayer setzen und zurücksetzen
> dim oDocument as variant: oDocument = ThisComponent
> dim oController as variant: oController = oDocument.CurrentController
> dim oLayerManager as variant: oLayerManager = oDocument.LayerManager
> dim xLayer as variant: xLayer = oLayerManager.getByIndex(0)
> dim oTempLayer as variant: oTempLayer = oController.ActiveLayer
> oController.ActiveLayer = xLayer
> oController.ActiveLayer = oTempLayer
> end sub
> 
> 
> Noch ein Problem: Das Watchwindow zeigt die VPL-Properties nicht richtig 
> an. Für Fehlersuche bei Layers benutze ich daher
> 
> sub ShowLayerProperties(byVal aLayer as variant)
> if Not(aLayer.supportsService("com.sun.star.drawing.Layer")) then
>       msgbox('no Layer')
>       exit sub
> end if
> dim sMessage as string
> sMessage = "Layer: " & aLayer.name & chr$(13)
> sMessage = sMessage & "title:" & aLayer.title & chr$(13)
> sMessage = sMessage & "description:" & chr$(13) & aLayer.description & 
> chr$(13)
> sMessage = sMessage & "is visible: " & aLayer.isVisible & chr$(13)
> sMessage = sMessage & "is printable: " & aLayer.isPrintable  & chr$(13)
> sMessage = sMessage & "is locked: " & aLayer.isLocked
> msgbox(sMessage)
> end sub
Hallo Regina,
Danke für die schnelle Antwort.
Hab's natürlich sofort probiert :)
Leider funktioniert das immer noch nicht :(

Layer: Test
title:
description:

is visible: False
is printable: False
is locked: False

Die Datei ist hier:
https://www.dropbox.com/s/3z5m7ryz49ilk3n/draw-macrotest2.odg?dl=0


-- 
Gruss
  Bernd


-- 
Liste abmelden mit E-Mail an: [email protected]
Probleme? 
https://de.libreoffice.org/hilfe-kontakt/mailing-listen/abmeldung-liste/
Tipps zu Listenmails: https://wiki.documentfoundation.org/Netiquette/de
Listenarchiv: https://listarchives.libreoffice.org/de/users/
Datenschutzerklärung: https://www.documentfoundation.org/privacy

Antwort per Email an