Fritz Loseries schrieb:

> Hallo Entwickler und Entwicklerinnen,
> 
> bin neu in dieser Mailingliste und auch ein Newby was die 
> Makroentwicklung in Basic angeht.
> Vielleicht ist mein Problem schon einmal erörtert worden. Ich bin 
> dankbar, wenn mir jemand eine Lösung anbieten kann.
> 
> Mein Anliegen ist, Key Events abzufangen. Leider mußte ich feststellen, 
> dass die übliche Installation eines KeyListeners keine Früchte trägt:
> 
>         '--- installation of an key event listener
>         oKeyListener =
>     createUnoListener("MyApp_","com.sun.star.awt.XKeyListener")
>         oComponentWindow.addKeyListener(oKeyListener)
> 
> 
> Es ist wohl so, dass der KeyEvent von einer anderen Methoden "consumed" 
> wird, und somit nicht mehr an die anderen KeyHandler weitergereicht wird.

Korrekt. KeyEvents gehen immer an das Fenster, das den Focus hat. Das
ist nicht das Component Window, dieses ist nur die äußere Hülle und
enthält weitere Fenster (EditWindow, Srollbars etc.).

> Nun habe ich in einer Diskussion von 2003 bei der übergeordneten 
> internationalen Dev-Mailingliste einen Hinweis gefunden, dass nicht ein 
> KeyListener dem Component Window hinzugefügt werden soll, sondern ein 
> KeyHandler dem ExtendedToolkit des WindowPeer.

Auch das ist richtig. Offiziell ist das "ExtendedToolkit" deprecated,
aber es funktioniert IIRC noch. Du kannst auch alternativ am Controller
direkt einen KeyHandler anmelden, da dieser das Interface
com.sun.star.awt.XUserInputInteraction unterstützt, das auch eine
"addKeyHandler"-Methode hat.

> Ob dies dann funktioniert weiss ich allerdings noch nicht, da ich 
> zunächst ein Problem mit der Methode queryInterface() in Basic habe.
> Habe versucht folgenden Java-Code nach Basic zu transformieren, bin aber 
> kläglich gescheitert:

Basic braucht kein queryInterface. Du kannst das alles ignorieren. In
Basic sähe der Anfang so aus:

myExtendedToolkit =
myComponent.CurrentController.Frame.ContainerWindow.Toolkit

Das Problem ist, dass du nun einen Handler brauchst, den du dort
anmelden kannst. Nun kannst du zwar Listener in Basic implementieren,
aber ich glaube nicht, dass man einen Handler installieren kann. Dieser
muss nämlich im Callback immer was zurückgeben.

Wahrscheinlich geht das auch irgendwie (geheim ;-)), aber ein absoluter
Basic-Experte bin ich nicht. Vielleicht weiß das jemand anderes.

Ciao,
Mathias

-- 
Mathias Bauer (mba) - Project Lead OpenOffice.org Writer
OpenOffice.org Engineering at Sun: http://blogs.sun.com/GullFOSS
Please don't reply to "[EMAIL PROTECTED]".
I use it for the OOo lists and only rarely read other mails sent to it.

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Antwort per Email an