Problem mit OnKeyPress



  • Hallo zusammen,

    irgendwie macht mir das OnKeyPress- Ereignis auf meinem Formular Probleme.
    Folgende Konstellation ist vorhanden.
    Ich habe eine Form1 mit einem Button darauf. Mit Hilfe dieses Buttons rufen ich eine Form2 auf.
    Nun möchte ich gerne in Form2 auf Tastatureingaben reagieren.
    Ich habe auch in Form2->KeyPreview auf true.
    Aber leider erhalte ich keine Reaktion.

    Frage:
    Kann es sein, dass man in diesem Formular2 nicht mehr auf OnKeyPress... reagieren kann ?

    Hat vielleicht jemand einen Tipp für mich ?



  • hi

    meines wissens funktioniert onkeypress nur fuer ascii.
    wenn du nun auf F1, Alt-r, Shift-1 reagieren moechtest, mußt du dann OnKeyDown bzw. OnkeyUp verwenden.

    auf welche tasten moechtest du eigendlich reagieren ?

    Deadman



  • Kann es sein, dass man in diesem Formular2 nicht mehr auf OnKeyPress... reagieren kann

    nee! 🙂



  • Hallo Deadman,
    ich möchte eigentlich nur auf ganz normale Buchstabentasten reagieren.
    Also nur ascii Zeichen



  • Vermutlich sind Komponenten auf der Form die der Form den Eingabe-Focus klauen



  • Ja, das kann durchaus sein, aber ich dachte immer,
    wenn Form1->KeyPreview auf true ist, sei es egal, welche Komponente
    den Eingabefokus hat, oder liege ich da falsch ?



  • nee is eigentlich schon so.. was willst du denn genau machen? Bist du dir sicher daß er kein OnKeyPress ausspuckt? Vielleicht is ja nur ein Fehler im Code, so daß es nur so aussieht als ob er nicht drauf reagieren würde?



  • Also mein Code sind so aus:

    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    Form2->Show();
    }
    //---------------------------------------------------------------------------

    Mit dieser Methode zeige ich Form2 an.

    void __fastcall TForm2::FormKeyPress(TObject *Sender, char &Key)
    {
    char keyString[25];
    keyString[0] = Key;
    strcpy(&keyString[1], " wurde gedrückt!");
    Application->MessageBox(keyString , "Key Press", MB_OK);
    }
    //---------------------------------------------------------------------------

    Form2->Preview = true;
    Mit dieser Methode möchte ich gerne auf KeyPress reagieren, aber leider tut sich da überhaupt nichts.

    Ich habe gerade noch einen Fehler in meinem letzten Posting entdeckt.
    Es muss heißen:
    Form2->KeyPreview = true;
    nicht Form1.

    [ Dieser Beitrag wurde am 04.04.2003 um 13:34 Uhr von maam editiert. ]

    [ Dieser Beitrag wurde am 04.04.2003 um 13:37 Uhr von maam editiert. ]



  • also wenn das nicht funktioniert haste kein focus



  • Oh sorry,
    Ich glaube es war doch mein Fehler,
    ich bin wohl aus einer Methode herausgesprungen, bevor ich Form2 den Fokus zugeitelt hatte.

    Schäm,Schäm... 😞


Anmelden zum Antworten