Drücken der Taste "G" abfangen - Wie?



  • Hallo

    ich vermute EPMS will für alle seine Edits solche OnEnter/OnLeave-Überprüfungen.

    Nimm statt dem bool-Member (bitte keine globale Variable!) einen Pointer auf TComponent, wo du statt true/false immer den Sender des letzten Aufrufs bzw NULL einträgst, so kannst du nicht nur später vergleichen ob ein Control gerade im OnEnter war, sondern auch welches.

    bis bald
    akari



  • Genau akari. Das meinte ich.

    Allerdings ist mir dein Vorschlag noch etwas zu hoch. 😃
    Mit Pointer habe ich mich noch nicht wirklich beschäftigt. Kannst du mir da einen Tipp geben, wie genau ich deinen Vorschlag realisieren kann?



  • Hallo

    Form-Header

    ...
    privte :
      TObject* lastenter; // anstatt einfachem bool hinzufügen
    public :
    

    Form-Implementation

    __fastcall TForm1::TForm1(TComponent* Owner)
      : TForm(Owner), lastenter(0) // Member initialisieren
    
    // Diese beiden Eventmethoden jedem betreffendem Edit zuweisen
    void __fastcall TForm1::EditEnter(TObject* Sender)
    {
      lastenter = Sender;
    }
    
    void __fastcall TForm1::EditExit(TObject* Sender)
    {
      lastenter = NULL;
    }
    

    jetzt kannst du an jeder belibigen Stelle deines Forms mit

    if (lastenter == Edit1)
    

    bis bald
    akari
    überprüfen, ob Edit1 gerade fokusiert ist



  • @akari
    Danke schön für die Hilfe. Werde das ausprobieren.

    Habe nochmal eine kleine Frage, die nicht unbedingt zu dem Thema gehört. Vielleicht kann mir die ja jemand schnell beantworten.

    Wenn ich z.b. bei einem Button das OnClick Ereigniss defeniert habe steht es ja in diesem Bereich:

    void __fastcall Tartikel_bearbeiten::Button2Click(TObject *Sender)
    

    Kann ich von woanders im Programm diese OnClick Funktion auch aufrufen? Wenn ja, wie mache ich das?

    Gruß



  • Das geht theoretisch schon.

    artikel_bearbeiten->Button2Click(Sender);
    

    Was da nun in Sender reinkommen soll hängt davon ab, wo du diese Funktion aufrufen willst.
    Ich würde aber davon abraten, das so zu machen. Besser ist es, du definierst eine eigene Funktion, die das ausführt was du in der ButtonClick-Funktion machen willst und rufst die dann auf.



  • Hallo

    Habe nochmal eine kleine Frage, die nicht unbedingt zu dem Thema gehört. Vielleicht kann mir die ja jemand schnell beantworten.

    Ein Thema ein Thread, ein Thread ein Thema. Also mach beim nächten Mal für neue Fragen einen neuen Thread auf

    aus einer Methode von Tartikel_bearbeiten heraus :

    Button2Click(0);
    // oder
    Button2Click(Button2);
    

    /Edit : ach bin ich langsam

    bis bald
    akari



  • Ich danke euch beiden.

    @akari
    Sorry für das Thema im Thema.



  • Joe_M. schrieb:

    Wenn das alles statische Edits sind, kannst Du die alle gleichzeitig markieren und die gewünschten Ereignismethoden zuweisen.
    Oder aber tatsächlich für die Edits im Konstrukor des Forms die Methoden zuweisen.

    Dann doch nochmal ich. 😃

    @Joe_M.
    Wie kann ich denn mehrere statische Edits gleichzeitig markieren? Habe es mal mit gedrückter STRG Taste probiert. Geht aber nicht.



  • Dann probier mal die Shift-Taste.



  • Hallo

    Wie kann ich denn mehrere statische Edits gleichzeitig markieren? Habe es mal mit gedrückter STRG Taste probiert. Geht aber nicht.

    Du must die SHIFT-Taste gedrückt halten.

    bis bald
    akari


Anmelden zum Antworten