Mit "ENTER" zum nächsten Control



  • Es gab schon mal so eine Frage, leider finde ich das nicht mehr.

    weiss jemand wie, Mit Enter wie mit Tab?



  • Wie folgt auf Application->OnMessage reagieren:

    void __fastcall TForm1::AppOnMessage(MSG& msg, bool&)
    {
       if(msg.message == WM_KEYDOWN && msg.wParam == VK_RETURN)
          msg.wParam = VK_TAB;
    }
    


  • Das funzt ja supper, sogar besser als ich brauche 😉

    wenn ein Button den Focus hat, soll Return, eigentlich standardmessäg funktionieren.

    ich habe mal so ein bsp bei "BYTES & MORE" gesehen. Die Seite war heute fast ganzen Tag offline, deshalb habe ich hier gesucht.

    Da gibt es noch eine Lösung für mein Problem: http://www.bytesandmore.de/rad/cpp/snipp/sc02005.php

    Danke für die Hilfe.

    [ Dieser Beitrag wurde am 22.05.2003 um 09:58 Uhr von Jansen editiert. ]



  • Also wie nun? Ich finde die Performance mit Return statt TAB sowieso ziemlich unsinnig. Aber wenn du es so willst, dann musst du eben auf das Standard-Handling verzichten.
    Übrigens ist die Lösung auf BytesAndMore falsch. Das OnKeyPress-Event der Form wird nur ausgelöst, wenn gerade kein Control auf der Form den Fokus hat, was praktisch nie der Fall ist.



  • Hallo WebFritzi,

    ich kann Dir in keiner Weise zustimmen.

    a) "Performance mit Return statt TAB"
    bei Anwendungen mit vielen Eingaben von Zahlen
    ( Finanzanwendungen, Vermessung etc)
    benutzt man zur Eingabe ausschließlich den Zahlenblock !

    b) "Übrigens ist die Lösung auf BytesAndMore falsch"
    bitte ließ den Artikel doch noch mal etwas genauer,
    auch das was im REM steht.
    Zitat:
    "// (nicht vergessen: KeyPreview-Eigenschaft des Formulars auf true setzen !)"

    ansonst kann ich nur sagen was bei BytesAndMore gepostet wird funktioniert
    ALLES ! (hab rund 80-90% getestet)

    tschau
    Mario 😉



  • OK, du hast auf jeden Fall in (a) recht. Das sehe ich ein. Nur in (b) tritt ein Problem auf. Du hattest zwar auch hier recht: ich hatte den Artikel nicht richtig gelesen. Nur bei Buttons funzt das nicht. Hat ein Button den Fokus und man drückt RETURN, dann wird der Fokus nicht weitergeleitet. Aber das ist vielleicht auch garnicht im Sinne des Erfinders.



  • Hallo WebFritzi,

    hast ja recht. Return->TAB soll ja nur bei Eingabe-Elemente funktionieren.
    Ich frage in KeyPress-Ereignis deshalb den Sender ab, und beschränke so
    die Umwandlung von Return nach TAB ausschließlich auf Eingaben.

    noch nen schönen Tag

    Mario :p



  • ähm, hallo webfritzi, das Ereigniss

    AppOnMessage(MSG& msg, bool&)
    

    gibts ja gar nicht für ein TForm...oder bin ich blöd? 😞



  • Du muss das Application->OnMessage Ereignis abfangen.

    das heist in deinem OnCreate z.B.

    schreibst du
    Application->OnMessage = AppOnMessage;

    und dann muss du natürlich
    in deinem header die methode selbst deklarieren.

    void __fastcall AppOnMessage(MSG& msg, bool&);

    und dann kannst du sie auch benutzen



  • Was ist denn in void __fastcall AppOnMessage(MSG& msg, bool&); das bool&? bei dem meldet mir der Compiler im Header einen Fehler und zwar: "Fehler in Modul MainForm: Falsche Methodendeklaration in Klasse TMain_Frm." 😕



  • Auch dir die Beschreibung des Events von TApplication::OnMessage an. da dürfte eine Beispieldeklaration vorhanden sein. Hab im MOment grad keinen Builder da.

    -junix



  • äh ja, zur Erklärung deiner Frage: "bool&" ist das Selbe wie "bool &". In der Deklaration der Funktion müssen die Parameternamen nicht unbedingt bekannt sein (da nicht erforderlich. Ist aber trotzdem toll, wenn man anhand der Variablennamen die Bedeutung des Parameters ausfinden kann. In der Definition brauchst du allerdings den Namen azugeben.

    -junix



  • Meine Frage hat sich selber gelöst. Danke trozdem! 😃


Anmelden zum Antworten