KeyListener im Dokument?

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

Moderator: Moderatoren

Teekeks
Beiträge: 2
Registriert: Mo, 24.10.2011 09:09

KeyListener im Dokument?

Beitrag 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?
Zuletzt geändert von Teekeks am Mi, 26.10.2011 09:26, insgesamt 1-mal geändert.
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: KeyListener mit C#?

Beitrag 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
Teekeks
Beiträge: 2
Registriert: Mo, 24.10.2011 09:09

Re: KeyListener mit C#?

Beitrag 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!
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: KeyListener im Dokument?

Beitrag 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
Antworten