Date: prev next · Thread: first prev next last
2018 Archives by date, by thread · List index


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: users+unsubscribe@de.libreoffice.org
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

Context


Privacy Policy | Impressum (Legal Info) | Copyright information: Unless otherwise specified, all text and images on this website are licensed under the Creative Commons Attribution-Share Alike 3.0 License. This does not include the source code of LibreOffice, which is licensed under the Mozilla Public License (MPLv2). "LibreOffice" and "The Document Foundation" are registered trademarks of their corresponding registered owners or are in actual use as trademarks in one or more countries. Their respective logos and icons are also subject to international copyright laws. Use thereof is explained in our trademark policy.