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