Makros per Kontextmenü ausführen
Verfasst: Fr, 22.03.2013 07:11
In angehängtem Beispiedokument findet man folgende Makros:
Diese erzeugen ein Kontextmenü mit drei Einträgen:
Das Makro muss einmalig ausgeführt werden (Extras/Anpassen/Ereignisse), damit das Kontextmenü beim Aufruf um die drei Menüpunkte rot, gelb, grün erweitert wird. Für jedes mit dem Kontextmenü aufzurufende Makro, gibt es in der Function einen Anweisungsblock. Hier den Index je Eintrag hochzählen, den im Kontextmenü anzuzeigenden Text eintragen und den Pfad zur aufzurufenden Routine.
Code: Alles auswählen
sub registerContextMenuInterceptor
oController = ThisComponent.CurrentController
oContextMenuInterceptor = CreateUnoListener("OOO_", "com.sun.star.ui.XContextMenuInterceptor")
oController.registerContextMenuInterceptor(oContextMenuInterceptor)
end sub
function OOO_notifyContextMenuExecute(oContextMenuExecuteEvent as co.sun.star.ui.ContextMenuExecuteEvent) as variant
oActionTriggerContainer = oContextMenuExecuteEvent.ActionTriggerContainer
oMenuItem = oActionTriggerContainer.createInstance("com.sun.star.ui.ActionTrigger")
oActionTriggerContainer.insertByIndex(0, oMenuItem)
oMenuItem = oActionTriggerContainer.getByIndex(0)
oMenuItem.setPropertyValue("Text", "rot")
oMenuItem.setPropertyValue("CommandURL", "vnd.sun.star.script:Standard.Einfaerben.S_Set_red?language=Basic&location=document")
oActionTriggerContainer.replaceByIndex(0, oMenuItem)
oMenuItem = oActionTriggerContainer.createInstance("com.sun.star.ui.ActionTrigger")
oActionTriggerContainer.insertByIndex(1, oMenuItem)
oMenuItem = oActionTriggerContainer.getByIndex(1)
oMenuItem.setPropertyValue("Text", "gelb")
oMenuItem.setPropertyValue("CommandURL", "vnd.sun.star.script:Standard.Einfaerben.S_Set_yellow?language=Basic&location=document")
oActionTriggerContainer.replaceByIndex(1, oMenuItem)
oMenuItem = oActionTriggerContainer.createInstance("com.sun.star.ui.ActionTrigger")
oActionTriggerContainer.insertByIndex(2, oMenuItem)
oMenuItem = oActionTriggerContainer.getByIndex(2)
oMenuItem.setPropertyValue("Text", "grün")
oMenuItem.setPropertyValue("CommandURL", "vnd.sun.star.script:Standard.Einfaerben.S_Set_green?language=Basic&location=document")
oActionTriggerContainer.replaceByIndex(2, oMenuItem)
OOO_notifyContextMenuExecute = com.sun.star.ui.ContextMenuInterceptorAction.EXECUTE_MODIFIED
end function
sub S_Set_green
osel = thiscomponent.currentselection
osel.cellbackcolor = 32768'grün
end sub
sub S_Set_yellow
osel = thiscomponent.currentselection
osel.cellbackcolor = 16776960'gelb
end sub
sub S_Set_red
osel = thiscomponent.currentselection
osel.cellbackcolor = 16711680'rot
end sub
Code: Alles auswählen
registerContextMenuInterceptor
Code: Alles auswählen
OOO_notifyContextMenuExecute
Gruß RoMenuItem = oActionTriggerContainer.createInstance("com.sun.star.ui.ActionTrigger")
oActionTriggerContainer.insertByIndex(0, oMenuItem)
oMenuItem = oActionTriggerContainer.getByIndex(0)
oMenuItem.setPropertyValue("Text", "rot")
oMenuItem.setPropertyValue("CommandURL", "vnd.sun.star.script:Standard.Einfaerben.S_Set_red?language=Basic&location=document")
oActionTriggerContainer.replaceByIndex(0, oMenuItem)