Announcement

Collapse
No announcement yet.

Mit Enter-Taste statt Tabulator navigieren

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Mit Enter-Taste statt Tabulator navigieren

    Unsere Anwender sind es von anderen Oberflächen (z.B. Access) schlicht gewohnt Eingaben mit der Enter-Taste abzuschließen und so auch zum nächsten Focus zu springen. Und zwar unabhängig davon ob es sich um ein Textfeld oder eine Datenzelle in einem Datagrid handelt.

    Mit folgender Prozedur habe ich die Implementation in einem Formular, das vererbt werden soll, versucht:

    procedure Form1.txt_KeyPress(sender:System.Object sender; e:KeyPressEventArgs) ;
    begin
    if e.KeyChar ='{ENTER}' then begin
    SendKeys.Send( '{ENTER}{TAB}' );
    e.Handled = true
    end
    end;

    Anschließend habe ich diesen Code im Create-Constructor des Formulars wie folgt aufgerufen

    include(self.KeyPress,self.txt_KeyPress);

    Trotzdem kann man nur mit der Tab-Taste navigieren. Was läuft da schief?? Oder muß die Prozedur auf andere Art und Weise eingebunden werden??

  • #2
    Moin Christian,
    ich muss gestehen, dass ich Deinen Lösungsversuch nicht kapiert habe.
    Das von Dir beschrieben Verhalten lässt sich aber wie folgt erreichen:
    ------
    procedure TForm1.FormCreate(Sender: TObject);
    begin
    Application.OnMessage := Self.AppMessage;
    end;

    procedure TForm1.AppMessage(var Msg: TMsg; var Handled: Boolean);
    begin
    if (msg.message = WM_KeyDown) and (Msg.wParam = 13) then begin
    // Hier sollte die Bedingung noch präzisiert werden !!!
    Msg.wParam := 9;
    end;
    end;
    ------
    Gruß,
    Geer

    Comment


    • #3
      Moin Geert,
      bei deinem Code handelt es sich wohl um jenen in der VCL, wir arbeiten aber mit WindowsForms. Dort funzt dein Code leider nicht

      Comment


      • #4
        Hallo
        *
        versuche mal folgendes
        *
        if Key=13 then
        Form1.findnextControl(Form.ActiveControl,True,True ,False).setfocus;
        *
        *
        Gruß Oswal

        Comment


        • #5
          Hi Leute,
          .
          mit folgendem Code kann man mit der Entertaste die Controls "durchtappen".
          <pre><code>
          <b>procedure</b> TfrmXYZ.FormKeyPress(Sender: TObject; <b>var</b> Key: Char);
          <b>begin</b>
          <b>if</b> key = #13 <b>then</b>
          <b>begin</b>
          <font color="blue"><i>{if 'Return' key then 'Tab key'}</i></font>
          key := #0;
          Self.Perform(WM_NextDlgCtl, 0, 0);
          <b>end</b>;
          <b>end</b>;
          </code></pre>
          Alternativ lässt sich die Richtung auch festlegen, hier sei mal auf:
          <pre><code>
          SelectNext(ActiveControl, True, True);
          </code></pre>
          verwiesen

          Comment

          Working...
          X