Seite 1 von 1

KeyListener im Dokument?

Verfasst: Mo, 24.10.2011 09:16
von Teekeks
Hallo!

Ich arbeite mit OpenOffice und c# über die uno-Bridge.

Ich habe es bereits geschafft einen EventListener für das disposing hinzuzufügen.
Nun möchte ich aber noch auf Tastendrücke im openOffice (Writer) reagieren können.

Bei folgendem:

Code: Alles auswählen

                frame.getContainerWindow().addKeyListener(new OOKeyListener(OOKeyEventHandler));

//...

    public class OOKeyListener : XKeyListener
    {
        public delegate void KeyEventHandlerHelper(KeyEvent e, KeyEventType t);
        private KeyEventHandlerHelper Ke;

        public OOKeyListener(KeyEventHandlerHelper k)
        {
            Ke = k;
        }

        public void keyPressed(KeyEvent e)
        {
            MessageBox.Show("Fire!");
            Ke.Invoke(e, KeyEventType.ket_Pressed);
        }

        public void keyReleased(KeyEvent e)
        {
            MessageBox.Show("Fire!");
            Ke.Invoke(e, KeyEventType.ket_Released);
        }

        public void disposing(EventObject Source)
        {
            MessageBox.Show("Fire!");
        }
    }
Wird ebenfalls nur das Integrierte disposing aufgerufen. nicht jedoch die Events keyReleased und keyPressed.
Auch ein

Code: Alles auswählen

frame.getComponentWindow().addKeyListener(new OOKeyListener(OOKeyEventHandler));
hat nicht den gewünschten Effekt erbracht.

Ich vermute dass ich den keyListener an einer falschen Stelle übergebe 8also an das falsche Objekt).
Wo wäre dass denn richtig untergebracht?

Re: KeyListener mit C#?

Verfasst: Mo, 24.10.2011 20:44
von F3K Total
Hi, mit C# kenn ich mich nicht aus, möchte Dich aber auf folgende Zeilen in deinem Code hinweisen:

Ke.Invoke(e, KeyEventType.ket_Pressed)
Ke.Invoke(e, KeyEventType.ket_Released)

HTH Gruß R

Re: KeyListener mit C#?

Verfasst: Mi, 26.10.2011 09:09
von Teekeks
Die zeile ist schon richtig, ket steht für KeyEventType.

Aber die Events wo das was du meintest abgeschickt werden soll werden garnicht erst aufgerufen!

Wenn jemand eine Lösung ohne C# kennt mit der man auf Tastendrücke im Dokument reagieren kann, dann würde mir das auch schon sehr weiter helfen!

Re: KeyListener im Dokument?

Verfasst: Mi, 26.10.2011 18:13
von F3K Total
Hallo, folgender Code, habe ich übrigens hier aus dem Forum, läuft unter Basic:

Code: Alles auswählen

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 "Enter-Taste gedrückt" '1280=Enter Taste
end function

Function KeyHandler_KeyReleased(oKeyEvent) As Boolean
KeyHandler_KeyReleased = false
End Function
Viel Erfolg
Gruß R