Mit Return statt Tab zum nächsten Feld wechseln



  • Hallo,

    wie kann man einen Tabulator in einem Edit Feld simulieren?
    Ich möchte den Fokus beim Drücken von Return gerne auf das nächste
    Edit Feld setzen.

    Normal geht das ja so:

    void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &Key)
    {
        if (Key == 13) {
            Edit2->SetFocus();
        }
    }
    

    ich möchte aber diese Funktion nicht 20 mal in meinem Programm haben,
    also möchte ich nicht Edit2 fest angeben sondern das nächste in der Tabulator
    Reihenfolge.

    Wie geht das? Hat jemand eine Idee?



  • Hallo

    Diese Mehtode als KeyPress-Event an alle Edits übergeben :

    void __fastcall TForm1::EditKeyPress(TObject *Sender, char &Key)
    {
      if (Key == VK_RETURN) 
      {
        Key = '\0';
        TWinControl *Next;
        if ((Next = FindNextControl(ActiveControl, true, true, true)) != NULL)
          Next->SetFocus();
        }
      }
    

    bis bald
    akari



  • ich würds so machen :

    void __fastcall TForm1::EditKeyPress(TObject *Sender, char &Key)
    {
      if (Key == VK_RETURN) 
      {
       keybd_event(VK_TAB,0,0,0);
       keybd_event(VK_TAB, 0, KEYEVENTF_KEYUP, 0);
      } 
    }
    


  • if (Key == VK_RETURN)
        PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
    


  • Danke! Klappt wunderbar 🙂

    würde doch auch prima in die FAQ passen oder?


Anmelden zum Antworten