Announcement

Collapse
No announcement yet.

Ereignisse im Form-Window abfragen

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

  • Ereignisse im Form-Window abfragen

    Hallo

    Wie kann ich Ereignisse von Child-Windows auch im Form-Window abfragen?<br>

    Beispiel:
    Mehrere Editfelder auf einem Formular definiert. Sobald in einem Edit-Feld das Ereignis 'OnChange' stattfindet, soll auch das Formular ein Ereignis erhalten.
    Damit ich nicht auf jedem Editfeld das OnChange-Ereignis ausprogrammieren muss, wäre es schön, wenn es eine andere Möglichkeit gäbe.
    Vielleicht habt ihr eine gute Idee!

    vielen Dank im voraus - René

  • #2
    Hallo,

    schaue einmal in der Delphi-Hilfe zu <b>TForm</b> unter der Eigenschaft <b>KeyPreview</b> nach. Dort ist auch ein Beispiel aufgeführt, in dem genau diese Aufgabe demonstriert wird.

    Ausserdem können sich mehrere Instanzen eine gemeinsame Ereignisbehandlungsmethode "teilen"

    Comment


    • #3
      Hallo Andreas

      Danke für deinen Hinweis.
      Ich habe mir das Beispiel angeschaut. Leider funktioniert es nicht ganz so wie ich mir das wünsche.
      Zum Beispiel erhalte ich beim Einfügen aus dem Buffer (Ctrl-V) zwar ein OnChange-Ereignis auf dem Edit-Feld aber kein OnKeyPress-Ereignis auf der Form.

      Kann ich das nur über eine eigene (von TEdit abgeleitete) Komponente abfangen, in dem ich eine eigene Meldung an meine Form sende wenn etwas geändert wurde?
      Oder hast Du vielleicht noch eine andere gute Idee

      Comment


      • #4
        Hallo,

        in der Delphi-Hilfe steht zu <b>OnKeyPress</b> die folgende Einschränkung:

        <i>Tasten, die keinem ASCII-Char-Wert entsprechen (z.B. UMSCHALT oder F1), generieren kein Ereignis OnKeyPress. Tastenkombinationen (z.B. UMSCHALT+A) führen nur zu einem Ereignis OnKeyPress (in diesem Beispiel ergibt UMSCHALT+A den Key-Wert "A", wenn die Feststelltaste deaktiviert ist). Soll auf Nicht-ASCII-Tasten oder Tastenkombinationen reagiert werden, verwenden Sie die Ereignisbehandlungsroutine für OnKeyDown oder OnKeyUp.</i>

        Wird anstelle von OnKeyPress das Ereignis <b>OnKeyDown</b> ausgewertet, wird das Formular von allen Tastendrücken informiert:
        <pre>
        procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
        Shift: TShiftState);
        begin
        if (Key = 67) and (ssCtrl in Shift) then
        ShowMessage('STRG+c erkannt:' + IntToStr(Key));
        end;
        </pre&gt

        Comment

        Working...
        X