Announcement

Collapse
No announcement yet.

Mit Enter in nächste TEDIT

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

  • Mit Enter in nächste TEDIT

    Ich habe ein Formular mit mehreren TEdit und möchte mit Enter von einem ins andere Springen. Weiß jemand wie das geht? Viele Grüße Peter

  • #2
    Einfach in das OnKeyDown Ereigniss des TEdit folgende zeile schreiben:

    if Key = 13 then FindNextControl ( ActiveControl, True, True, True ) .SetFocus;

    Gruß Grego

    Comment


    • #3
      Vielen Dank Pete

      Comment


      • #4
        Hallo,

        wenn Du die Reihenfolge der Kontrols mit der Eigenschaft Taborder definierst, kannst Du, wenn du folgende Funktion im Ereignis ONKEYPRESS einfügst, das gleiche Ergebnis erzielen.

        if Key = #13 then begin
        SendMessage(form1.Handle, WM_NEXTDLGCTL, 0, 0);
        Key := #0;
        end;

        Gruß

        Joh

        Comment


        • #5
          Hallo, ich möchte auch meinen Senf zu der Mit-Enter-Ins-Nächste-Feld-Hüpfen-Geschichte dazugeben:<p>

          Am besten hat es sich bewährt, wenn man die Eigenschaft <b>KeyPreview</b> des Formulars auf True setzt, und dann im Form.OnKeyDown-Ereignis folgenden Code schreibt:<p>
          <pre>
          if Key = VK_RETURN then PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
          </pre><p>
          Gruß,<br>
          Bernhar

          Comment


          • #6
            Zugegeben diese Methode ist noch besser!!!

            Grego

            Comment


            • #7
              Und wie kriegt man den TUUT beim Springen in das nächste Control weg? DBEDit klappt ohne Ton, TEdit nur mit Sounds..

              Comment


              • #8
                Indem man Key auf 0 setzt:

                <pre>if Key = #13 then
                begin
                key := #0;
                PostMessage(Handle, WM_NEXTDLGCTL, 0, 0);
                end; </pre>

                Uli Becke

                Comment


                • #9
                  Hai ihr alle
                  Die beste Lösung, meiner Meinung nach, ist diese hier.

                  Am besten hat es sich bewährt, wenn man die Eigenschaft KeyPreview des Formulars auf True setzt, und dann im Form.OnKeyDown-Ereignis folgenden Code schreibt:

                  if Key = #13 then
                  begin
                  self.Perform(WM_NEXTDLGCTL, 0, 0);
                  Key := #0;
                  end;

                  Dies hat den Vorteil das es sofort gemacht wird und nicht wie bei Sendmessage oder PostMessage irgendwo in der Message-Queue landet

                  Comment


                  • #10
                    Hm, sagt mal, klappt das denn tatsächlich mit dem Abschalten des Pieptons mit der Anweisung "Key := #0"???<p>
                    Ich habe diesen Tip zwar jetzt schon in zig Büchern gelesen, aber er hilft bei mir nichts, der Piep-Ton bleibt trotzdem beim Enter. Das selbe Problem hatte ich schon immer in Visual Basic... ?!

                    Comment


                    • #11
                      Hallo Bernhard,

                      um das Piepsen zu unterdrücken, muß Du neben dem Ereignis OnKeyDown auch das Ereignis <b>OnKeyPress</b> verarbeiten (wobei das Ereignis OnKeyDown nur bei den sogenannten Funktions/Systemtasten verwendet werden muß -> ansonsten reicht auch das Reagieren auf das Ereignis OnKeyPress).

                      <b>if key = #13 then key := #0;</b>

                      Tschüß

                      Torste

                      Comment


                      • #12
                        OnKeyPress, das wars......<p>
                        Thanx....

                        Comment

                        Working...
                        X