Hallo Kenner und Könner,
ich habe mir ein kleines Makro erstellt, welches in Draw die aktuelle Ebene ein oder ausblendet und auf F12 gelegt und ctrl F12 sperrt die Ebene.
Das funktioniert auch soweit ganz prima, allerdings ist es etwas nervig die entsprechende Ebene immer erst aktivieren zu müssen bevor ich sie ausblenden kann um dann wieder die Ebene zu aktivieren auf der man gerade arbeitet.
Nun ist in mir der Wunsch aufgekommen die Ebenen direkt über den Index ansprechen zu wollen, also die Tastenkombination F12 + 5 soll Ebene 5 ausblenden egal welche Ebene aktuell aktiv ist.
Ich habe aber im Moment keine Idee wie man das realisieren könnte!?
hmmm (vieleicht mit einer inputbox?) aber eine direkte Übergabe des Index wäre doch besser.
Nun hoffe ich jemand von euch hat da eine Ide oder Tip für mich.
schonmal Danke in Voraus
Tastenkombination für Makroaufruf
Moderator: Moderatoren
Tastenkombination für Makroaufruf
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Tastenkombination für Makroaufruf
Guten Morgen Clag,
war nicht ganz einfach und kann bestimmt verbessert werden:
Gruß R
war nicht ganz einfach und kann bestimmt verbessert werden:
Code: Alles auswählen
global myKeyHandler as object
global K1 as boolean
global K2 as boolean
global T1
global T2
Global nPage as integer
Global bLock as boolean
sub SetupKeyHandler
oController = thisComponent.currentController
myKeyHandler = CreateUnoListener("KeyHandler_","com.sun.star.awt.XKeyHandler")
oController.addKeyHandler(myKeyHandler)
end sub
sub RemoveKeyHandler
oController = thisComponent.currentController
oController.removeKeyHandler(myKeyHandler)
end sub
function KeyHandler_keyReleased(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean
KeyHandler_keyReleased = False
if oKeyEvent.KeyCode >= 257 and oKeyEvent.KeyCode <= 265 then 'die Zahlen 1-9
K1 = true
nPage = oKeyEvent.KeyCode - 256
T1 = getsystemticks()
endif
if oKeyEvent.KeyCode = 779 then 'die Taste F12
K2 = true
T2 = getsystemticks()
if oKeyEvent.Modifiers = 2 then'Strg
bLock = true
else
bLock = false
endif
endif
if K1 = true and K2 = true then
if ABS(T1-T2) < 500 then 'Zeit zwischen Tastendrücken kleiner 0,5 Sekunden
if bLock then
S_Lock_unlock_layer(nPage)
bLock = false
else
S_hide_show_layer(nPage)
endif
endif
K1 = false
K2 = false
endif
end function
function KeyHandler_keyPressed(oKeyEvent as new com.sun.star.awt.KeyHandler) as boolean
if KeyHandler_keyPressed = false then
end if
end function
Sub S_hide_Show_layer(nPage)
if nPage = 1 then 'Weil Index 1 und 2 die beiden Hintergrungebenen sind
nIndex = 0
else
nIndex = nPage + 1
end if
'print nIndex
bVisible = thisComponent.Layermanager(nIndex).isvisible
thisComponent.Layermanager(nIndex).isvisible = not bVisible
end sub
Sub S_Lock_unlock_layer(nPage)
if nPage = 1 then 'Weil Index 1 und 2 die beiden Hintergrungebenen sind
nIndex = 0
else
nIndex = nPage + 1
end if
bIsLocked = thisComponent.Layermanager(nIndex).IsLocked
thisComponent.Layermanager(nIndex).IsLocked = not bIsLocked
end sub
- Mit F12+Ebenenzahl 1-9 wird die entsprechende Ebene ausgeblendet/enigeblendet
- Mit STRG+F12+Ebenenzahl 1-9 wird die entsprechende Ebene gesperrt/entsperrt
Gruß R
- Dateianhänge
-
- Keyhandler.odg
- (12.69 KiB) 106-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Tastenkombination für Makroaufruf
zumindest für einen gewöhnlichen Dialog funktioniert der Key-Listener:
http://www.openoffice.org/api/docs/comm ... tener.html
meiner Erfahrung nach einwandfrei.
Du müsstest mal schauen ob/wie der auch für das Draw-Dokument oder den Stardesktop greifbar ist, dazu musst Du nur schauen ob der Teil der Ausgabe von dbg_methods ist oder nimm XRAY.
Wenn es sich hingegen um ein Dokumentmakro handelt kannst Du im Dokument in der Datei /Configurations2/accelerator/current.xml direkt Einträge für alle 5(?) Kombinationen machen und für jede ein konkretes Makro zuweisen. Wie die konkreten Einträge für Deine Tastaturkombination aussehen müssen musst Du selbst herausfinden indem Du im Netz suchst oder bestehende Konfigurationsdateien Deines OO untersuchst.
Ein Beispieleintrag ist:
dieser startet mit Pfeil-links-Taste das Makro "dummy1" im Modul "ABC_work" der Dokumentbibliothek "ABC"
Gruß
Stephan
http://www.openoffice.org/api/docs/comm ... tener.html
meiner Erfahrung nach einwandfrei.
Du müsstest mal schauen ob/wie der auch für das Draw-Dokument oder den Stardesktop greifbar ist, dazu musst Du nur schauen ob der Teil der Ausgabe von dbg_methods ist oder nimm XRAY.
Wenn es sich hingegen um ein Dokumentmakro handelt kannst Du im Dokument in der Datei /Configurations2/accelerator/current.xml direkt Einträge für alle 5(?) Kombinationen machen und für jede ein konkretes Makro zuweisen. Wie die konkreten Einträge für Deine Tastaturkombination aussehen müssen musst Du selbst herausfinden indem Du im Netz suchst oder bestehende Konfigurationsdateien Deines OO untersuchst.
Ein Beispieleintrag ist:
Code: Alles auswählen
<accel:item accel:code="KEY_LEFT" xlink:href="vnd.sun.star.script:ABC.ABC_work.dummy1?language=Basic&location=document"/>
Gruß
Stephan
Re: Tastenkombination für Makroaufruf
hey ihr Beiden
allerbesten Dank für die gedanklichen Anstöße und Beispielcode ist ja praktisch schon fertig zum einbinden
werde mich gleich mal ans Ausprobieren machen.
ich wünsch Euch einen schönen "stressfreien" Sonntag
allerbesten Dank für die gedanklichen Anstöße und Beispielcode ist ja praktisch schon fertig zum einbinden
werde mich gleich mal ans Ausprobieren machen.
ich wünsch Euch einen schönen "stressfreien" Sonntag
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
Re: Tastenkombination für Makroaufruf
Hallo Clag,
weil mich das Einbetten der Tastenkombinationen in das Dokument interessiert hat, anbei noch ein Beispiel alà Stephan. F12 und eine Zahl ist mir da nicht gelungen, aberDanke nochmal an Stephan. Diese Variante ist sicherlich die bessere, stabilere!
Gruß R
weil mich das Einbetten der Tastenkombinationen in das Dokument interessiert hat, anbei noch ein Beispiel alà Stephan. F12 und eine Zahl ist mir da nicht gelungen, aber
- STRG+ Zahl zum Ausblenden/Einblenden
- STRG + SHIFT + Zahl zum Sperren/Entsperren
Code: Alles auswählen
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE accel:acceleratorlist PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "accelerator.dtd">
<accel:acceleratorlist xmlns:accel="http://openoffice.org/2001/accel" xmlns:xlink="http://www.w3.org/1999/xlink">
<accel:item accel:code="KEY_1" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_1?language=Basic&location=document"/>
<accel:item accel:code="KEY_2" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_2?language=Basic&location=document"/>
<accel:item accel:code="KEY_3" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_3?language=Basic&location=document"/>
<accel:item accel:code="KEY_4" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_4?language=Basic&location=document"/>
<accel:item accel:code="KEY_5" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_5?language=Basic&location=document"/>
<accel:item accel:code="KEY_6" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_6?language=Basic&location=document"/>
<accel:item accel:code="KEY_7" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_7?language=Basic&location=document"/>
<accel:item accel:code="KEY_8" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_8?language=Basic&location=document"/>
<accel:item accel:code="KEY_9" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_hide_Show_layer_9?language=Basic&location=document"/>
<accel:item accel:code="KEY_1" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_1?language=Basic&location=document"/>
<accel:item accel:code="KEY_2" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_2?language=Basic&location=document"/>
<accel:item accel:code="KEY_3" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_3?language=Basic&location=document"/>
<accel:item accel:code="KEY_4" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_4?language=Basic&location=document"/>
<accel:item accel:code="KEY_5" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_5?language=Basic&location=document"/>
<accel:item accel:code="KEY_6" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_6?language=Basic&location=document"/>
<accel:item accel:code="KEY_7" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_7?language=Basic&location=document"/>
<accel:item accel:code="KEY_8" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_8?language=Basic&location=document"/>
<accel:item accel:code="KEY_9" accel:shift="true" accel:mod1="true" xlink:href="vnd.sun.star.script:Standard.Module1.S_lock_unlock_layer_9?language=Basic&location=document"/>
</accel:acceleratorlist>
Gruß R
- Dateianhänge
-
- Accelerator_embedded.odg
- (10.76 KiB) 105-mal heruntergeladen
- miniKasse MMove 1.0.6 Base Videotutorial
- Windows 10: AOO, LO Linux Mint: AOO, LO
Re: Tastenkombination für Makroaufruf
Hey F3K Total,
der letzte Beispiel Code funktioniert auch einwandfrei.
haha jetz muß ich mich entscheiden ...
Nochmals Danke für deine weiterführende Hilfestellung
der letzte Beispiel Code funktioniert auch einwandfrei.
haha jetz muß ich mich entscheiden ...
Nochmals Danke für deine weiterführende Hilfestellung
LG
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox
clag
nutzt: WinXP SP3 / AOO 4.1.10 / Firefox