von aha8 » Mi, 10.07.2013 23:16
Falls jemand viel mit Bereichen arbeitet hätte ich da noch ein kleine Helfer-Skript. Es ist nicht allein auf meinem Mist gewachsen, ich kann aber nicht mehr sagen, woher die Idee kam (möglicherweise von Andrew Macro, aber wie gesagt, keine Gewähr).
Code: Alles auswählen
REM ***** BASIC *****
Sub Main
Dim oTextSections as Object
Dim oDlgModel, oModel, oDlg, oWin as Object
Dim iHeight, iWidth as Integer
oTextSections = ThisComponent.getTextSections()
iHeight = 30+16*oTextSections.getCount()
iWidth = 170
oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDlgModel.setPropertyValue("Width", iWidth)
oDlgModel.setPropertyValue("Height", iHeight)
oDlgModel.setPropertyValue("Title", "Textbereiche ein/ausblenden")
for i=0 to oTextSections.getCount()-1
Dim oSection as Object
oSection = oTextSections.getByIndex(i)
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", 16)
oModel.setPropertyValue("PositionY", iHeight - 30 - 8 -16*i)
oModel.setPropertyValue("Label", oSection.name())
if oSection.isVisible then
oModel.setPropertyValue("State", 1)
else
oModel.setPropertyValue("State", 0)
end if
oDlgModel.insertByName(oSection.name(), oModel)
next
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
oModel.setPropertyValue("Label", "OK")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", iWidth - 8 - 48 - 8 - 48)
oModel.setPropertyValue("PositionY", iHeight - 8 - 12)
oModel.setPropertyValue("PushButtonType", com.sun.star.awt.PushButtonType.OK)
oDlgModel.insertByName("okButton", oModel)
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
oModel.setPropertyValue("Label", "Abbrechen")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", iWidth - 8 - 48)
oModel.setPropertyValue("PositionY", iHeight - 8 - 12)
oModel.setPropertyValue("PushButtonType", com.sun.star.awt.PushButtonType.CANCEL)
oDlgModel.insertByName("cancelButton", oModel)
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setModel(oDlgModel)
oWin = CreateUnoService("com.sun.star.awt.Toolkit")
oDlg.createPeer(oWin, null)
if oDlg.execute() = 1 then
for i=0 to oTextSections.getCount()-1
oSection = oTextSections.getByIndex(i)
oSection.isVisible = oDlg.getControl(oSection.name()).state = 1
next
end if
End Sub
Einfach in ein eigenes Makro kopieren, über Extras → Anpassen einen Eintrag in einem Menü oder einer Toolbar anlegen und per Knopfdruck erscheint eine Liste, in der jeder Bereich des aktuellen Dokumentes per Häkchen ein- oder ausgeschaltet werden kann. (Sind keine Bereiche vorhanden erscheinen nur die beiden Aktions-Buttons.)
Ich verwende das Skript hauptsächlich um in meiner Vorlage für amtliche Schreiben Teile des Absenders (Email, Telefon, Fax, Handy) nach Bedarf ein- oder auszublenden.
Falls jemand viel mit Bereichen arbeitet hätte ich da noch ein kleine Helfer-Skript. Es ist nicht allein auf meinem Mist gewachsen, ich kann aber nicht mehr sagen, woher die Idee kam (möglicherweise von Andrew Macro, aber wie gesagt, keine Gewähr).
[code]
REM ***** BASIC *****
Sub Main
Dim oTextSections as Object
Dim oDlgModel, oModel, oDlg, oWin as Object
Dim iHeight, iWidth as Integer
oTextSections = ThisComponent.getTextSections()
iHeight = 30+16*oTextSections.getCount()
iWidth = 170
oDlgModel = CreateUnoService("com.sun.star.awt.UnoControlDialogModel")
oDlgModel.setPropertyValue("Width", iWidth)
oDlgModel.setPropertyValue("Height", iHeight)
oDlgModel.setPropertyValue("Title", "Textbereiche ein/ausblenden")
for i=0 to oTextSections.getCount()-1
Dim oSection as Object
oSection = oTextSections.getByIndex(i)
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlCheckBoxModel")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", 16)
oModel.setPropertyValue("PositionY", iHeight - 30 - 8 -16*i)
oModel.setPropertyValue("Label", oSection.name())
if oSection.isVisible then
oModel.setPropertyValue("State", 1)
else
oModel.setPropertyValue("State", 0)
end if
oDlgModel.insertByName(oSection.name(), oModel)
next
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
oModel.setPropertyValue("Label", "OK")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", iWidth - 8 - 48 - 8 - 48)
oModel.setPropertyValue("PositionY", iHeight - 8 - 12)
oModel.setPropertyValue("PushButtonType", com.sun.star.awt.PushButtonType.OK)
oDlgModel.insertByName("okButton", oModel)
oModel = oDlgModel.createInstance("com.sun.star.awt.UnoControlButtonModel")
oModel.setPropertyValue("Label", "Abbrechen")
oModel.setPropertyValue("Width", 48)
oModel.setPropertyValue("Height", 12)
oModel.setPropertyValue("PositionX", iWidth - 8 - 48)
oModel.setPropertyValue("PositionY", iHeight - 8 - 12)
oModel.setPropertyValue("PushButtonType", com.sun.star.awt.PushButtonType.CANCEL)
oDlgModel.insertByName("cancelButton", oModel)
oDlg = CreateUnoService("com.sun.star.awt.UnoControlDialog")
oDlg.setModel(oDlgModel)
oWin = CreateUnoService("com.sun.star.awt.Toolkit")
oDlg.createPeer(oWin, null)
if oDlg.execute() = 1 then
for i=0 to oTextSections.getCount()-1
oSection = oTextSections.getByIndex(i)
oSection.isVisible = oDlg.getControl(oSection.name()).state = 1
next
end if
End Sub
[/code]
Einfach in ein eigenes Makro kopieren, über Extras → Anpassen einen Eintrag in einem Menü oder einer Toolbar anlegen und per Knopfdruck erscheint eine Liste, in der jeder Bereich des aktuellen Dokumentes per Häkchen ein- oder ausgeschaltet werden kann. (Sind keine Bereiche vorhanden erscheinen nur die beiden Aktions-Buttons.)
Ich verwende das Skript hauptsächlich um in meiner Vorlage für amtliche Schreiben Teile des Absenders (Email, Telefon, Fax, Handy) nach Bedarf ein- oder auszublenden.