VK_TAB wird nicht vom System erkannt



  • Hallo ihr Lieben,

    habe mal wieder ein Problem. Diesesmal geht es um ein Editfenster.
    Wenn ein Wert eingegeben wird und dann die TAB-Taste gedrückt wird, kann ich diese Tasteneingabe nich bafngen. Ich zeige euch mal schnell einen Auszug aus meinem Quelltext:

    void __fastcall TForm_Main::Edit_Ig1KeyDown(TObject *Sender, WORD &Key,
          TShiftState Shift)
    {
    	if (Key == VK_RETURN)
        {
        	CheckCurveValue(Sender);
            readCurveSet(TCIndex);
        }
        else if (Key == VK_TAB)
        {
            CheckCurveValue(Sender);
            readCurveSet(TCIndex);
        }
    }
    

    Wie ihr sehen könnt, versuche in der Eventbehandlung von KeyDown, Return und Tab abzufangen. Return funktionier, Tab leider nicht. Hat jemand eine Idee, woran das liegt und wie ich es hinbekomme, dass TAB abgefangen wird?



  • Hallo

    Das TEdit bekommt gar nicht den Tab-Event, denn der wird bereits vom Form verarbeitet, um zum nächsten aktiven Control zu springen.
    Du must also den Tab beim Form abfangen, nicht beim TEdit.

    Aber was willst du denn in einem TEdit mit Tabs? TEdit kann eh nichts mit Tabs anfangen.

    bis bald
    akari



  • E$rstmal danke, für die schnelle Antwort.

    Wahrscheinlich habe ich ein Denkfehler mit eingebaut.
    Habe drei TEdit-Objekte, in denen Parameterwerte eingegeben werden und durch CheckCurveValue(Sender); readCurveSet(TCIndex); überprüft und gesichert werden. Diese Edit-Objekte befinden sich auf einem TTabControl mit 8 Tab-Seiten.
    Wenn ich nun einen Wert in einem der Edit-Fenster schreibe und dann Tab drücke, wird der Wert zwar in das Edit-Fenster niedergeschrieben aber nicht überprüft und gesichert. Anders bei Betätigung der Enter-Taste. Hier wird sowohl der Wert geprüft als auch in eine Strucktur über 'readCurveSet(...)' gesichert. Wollte nun die Tab-Eingabe abfangen und erzwingen, dass die Methoden ausgeführt werden.
    Leider funktionierte das bisher nicht.



  • Hallo

    benutzt entweder den Event TEdit::OnExit oder TEdit::OnChange, um die Eingabe zu prüfen.

    bis bald
    akari



  • Ja, klar. Stimmt, danke dir. Hätte ich natürlich auch drauf kommen müssen.


Log in to reply