KeyListener im Dokument?

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: KeyListener im Dokument?

Re: KeyListener im Dokument?

von F3K Total » Mi, 26.10.2011 18:13

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

Re: KeyListener mit C#?

von Teekeks » Mi, 26.10.2011 09:09

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 mit C#?

von F3K Total » Mo, 24.10.2011 20:44

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

KeyListener im Dokument?

von Teekeks » Mo, 24.10.2011 09:16

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?

Nach oben