Makro auf Mausklick

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Makro auf Mausklick

Beitrag von erikafuchs »

Hallo Ihr Lieben;
wie man in einem Dialogfeld per Mausklick ein Makro ausführt weiß ich, gibt es auch eine Möglichkeit ein Makro auszuführen wenn irgendwo auf einem Tabellenblatt ein Mausklick erfolgt oder die Returntaste gedrückt wird? Mir fällt da gar nichts dazu ein.
Vielen Dank für eure Mühe!
Grüße
Pit
Benutzeravatar
daswaldhorn
****
Beiträge: 196
Registriert: Mo, 17.05.2004 22:29
Wohnort: Voerde
Kontaktdaten:

Re: Makro auf Mausklick

Beitrag von daswaldhorn »

Hallo,

wenn du auf das Tabellenblatt eine Schaltfläche legst (die Symbolleiste "Formular-Steuerelemente" sichtbar machen), kannst du dieser wieder ein Makro zuweisen, schau mal in die Beispieldatei von Balu in diesem Thread. Bei der Return-Taste bin ich auch überfragt. :-)

Gruß, Carsten
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Makro auf Mausklick

Beitrag von erikafuchs »

Lieber Carsten,
vielen Dank für die schnelle Hilfe aber ich glaube das bringt mich nicht weiter. Ich möchte keine Schaltfläche auf dem Blatt haben. Ich erkläre vielleicht kurz worum es geht:
Ich mache mit meinen Schülern in Mathematik im Jahrgang 10 nach den Prüfungen und kurz vor den Ferien einen kleine Programmier-, Tabellenkalkulation- und Makrokurs. Jetzt fanden sie das alles zu langweilig und wollten mich vielleicht mit der Frage herausfordern ob man damit nicht auch "Snake" programmieren kann. Ich habe jetzt kurz nachgedacht und wollte eine "Schlange" (z.B. "o"s) per Zufallszahlen auf dem Blatt sich bewegen lassen und die Schüler sollen versuchen, sie mit einer "Mauer" (z.B. "x") einzufangen. Die Schüler setzen ein "x" in eine Zelle und die Schlange geht ein Feld weiter. Nach jedem Betätigen der Returntaste soll der nächste Schritt (Makro) ausgeführt werden. Es wäre blöd wenn man nach dem Plazieren des "x" noch eine Schaltfläche anklicken müsste.
Grüße
Pit
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Makro auf Mausklick

Beitrag von F3K Total »

Hallo Pit,
mit dem Thema habe ich letztens einige Abende verbracht,
hier der Code, der auf einem Calc Sheet funktioniert:

Code: Alles auswählen

global myKeyHandler as object
global myMouseClickHandler as object

sub setup_handler
SetupMouseClickHandler
SetupKeyHandler
end sub

sub remove_handler
RemoveMouseClickHandler
RemoveKeyHandler
end sub


sub SetupMouseClickHandler
oController = thisComponent.currentController
myMouseClickHandler = CreateUnoListener("MouseClickHandler_","com.sun.star.awt.XMouseClickHandler")
oController.addMouseClickHandler(myMouseClickHandler)
end sub

sub RemoveMouseClickHandler
On Error Resume Next
oController = thisComponent.currentController
oController.removeMouseClickHandler(myMouseClickHandler)
On Error Goto 0
end sub

function MouseClickHandler_mousePressed(oMouseEvent) as boolean 
MouseClickHandler_mousePressed = false
end function

Function MouseClickHandler_mouseReleased(oMouseEvent) As Boolean
On Error Goto err
if oMouseEvent.ClickCount = 2 then  Msgbox "Doppelklick"
err:
On Error Goto 0
MouseClickHandler_mouseReleased = False
End Function

Sub MouseClickHandler_disposing(oMouseEvent)
'
End Sub

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

Sub KeyHandler_disposing(oKeyEvent)
'
End Sub

function KeyHandler_keyPressed(oKeyEvent) as boolean
KeyHandler_keyPressed = false
if oKeyEvent.KeyCode=1280 then msgbox "Return-Taste"
end function

Function KeyHandler_KeyReleased(oKeyEvent) As Boolean
KeyHandler_KeyReleased = false
End Function
Wenn man jetzt "setup_handler" unter Extras/Anpassen/Ereignisse auf "Dokument öffnen" und "remove_handler" auf "Dokument wird geschlossen" legt, funzt es.

Viel Spaß damit
Gruß R
erikafuchs
******
Beiträge: 690
Registriert: Di, 13.02.2007 17:38
Wohnort: Büttelborn

Re: Makro auf Mausklick

Beitrag von erikafuchs »

Lieber R,
... sieht ja erstmal recht umfangreich aus. Ich werde es testen - vielen Dank erstmal.
Sehe ich es richtig, dass mein Code hier rein muss:
Sub KeyHandler_disposing(oKeyEvent)
'
End Sub
?
Grüße
Pit
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Makro auf Mausklick

Beitrag von F3K Total »

Hallo Pit,
erikafuchs hat geschrieben:Sehe ich es richtig ...
Nein, dass siehst Du nicht richtig, die sub ist so kurz.
Da wo

Code: Alles auswählen

Msgbox "Doppelklick"
oder

Code: Alles auswählen

msgbox "Return-Taste"
steht, ruftst Du deinen eigenen Code auf.

Gruß R
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Makro auf Mausklick

Beitrag von F3K Total »

Noch ein kleiner Tipp, mit

Code: Alles auswählen

ocell = ThisComponent.CurrentSelection
hast Du Zugriff auf die Zelle in die Du einen Doppelklick gemacht hast, oder in der Du die Return Taste gedrückt hast.

Gruß R
Antworten