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]