Harte Nuss: OnKeyDown bei Fensterwechsel



  • Ich steh auf dem Schlauch!

    Ich hab in meinem Projekt mehrere Fenster, die erst bei bedarf erzeugt werden. Die sind ganz einfach. Jedes hat ein Panel, das ein TImage beinhaltet. Wenn nun ein solchen Fenster neu erzeugt wird, kommen die Cursortasten über KeyPreview und OnKeyDown dort an wo ich sie brauche. Wenn ich aber zu einem anderen Fenster gehe, es muss nichts mit meinem Programm zu tun haben, und nun zurück....dann kommen die Cursortasten nicht mehr an.
    Was kann ich tun um diese Funktion zu reaktivieren? Ich habe keine weiteren Ideen mehr.

    Gruß Rudi

    PS: Entschuldigung: ich hab die Statusbar im Fenster vergessen.



  • Hallo

    Beim erstellen der Form ist AktiveControl == NULL, deshalb kann ich die Cursortasten abfangen. Bei einem Fensterwechsel wird AktiveControl auf ein Steuerelement gesetzt, das in der Tabstop-Reihenfolge ist. Dieses Steuerelement fängt dann die Cursortasten ab, und reicht sie nicht mehr an OnFormKeyDown weiter.

    Wenn alle Tabstops false sind ist nach dem Fensterwechsel AktiveControll immernoch NULL und mein Programm funktioniert so wie ich es wollte.



  • Hallo,
    wenn nun doch ein Steuerelement den Focus hat, will ich ihm diesem den Focus wegnehmen, aber auch keinen anderem Steuerelement zuweisen ( mit SetFocus() ). Obwohl ich nichts darüber gefunden habe, hab ich mich getraut, dies zu Programmieren:

    Form1->AktiveControl = NULL;
    

    Es funktioniert wunderbar, aber ich habe bedenken, dass es Nebenwirkungen geben könnte. Weiß jemand, ob ja oder nein?

    Danke.


Anmelden zum Antworten