Announcement

Collapse
No announcement yet.

Überschreiben eines Ereignisses

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

  • Überschreiben eines Ereignisses

    Hallo Allerseits !!

    Ich möchte eine Komponente von TQuery ableiten.
    Dort möchte ich im Ereignis 'OnStateChange' diverse änderungen machen.
    Da es aber leider keine Protectet- oder Public-Funktion gibt, die für das Auslösen dieses Ereignisses zuständig ist, kann ich auch nichts überschreiben.

    Ich habe es schon folgendermassen probiert :

    <code><pre>
    <font face="Courier New"><font color="#000080"><b>constructor</b></font> TkdgDataSource<font color="#FF0000">.</font>Create<font color="#FF0000">(</font>AOwner<font color="#FF0000">:</font> TComponent<font color="#FF0000">)</font><font color="#FF0000">;</font>
    <font color="#000080"><b>begin</b></font>
    <font color="#000080"><b>inherited</b></font><font color="#FF0000">;</font>
    OnStateChange <font color="#FF0000">:=</font> FOnStateChange<font color="#FF0000">;</font>
    <font color="#000080"><b>end

    procedure</b></font> TkdgDataSource<font color="#FF0000">.</font>FOnStateChange<font color="#FF0000">(</font>Sender<font color="#FF0000">:</font> TObject<font color="#FF0000">)</font><font color="#FF0000">;</font>
    <font color="#000080"><b>begin</b></font></font>
    </pre></code>
    <code><pre>
    <font face="Courier New"> <font color="#008000"><i>// Änderungen an dem Ereignis</i></font>
    <font color="#000080"><b>end</b></font><font color="#FF0000">;</font></font>
    </pre></code>

    Das Ereignis OnStateChanged habe ich noch einmal als Published deklariert.
    Damit habe ich aber das Problem, dass bei einer Verwendung dieses Ereignisses im Formular die Zuweisung an FOnStateChanged wieder aufgehoben wird, und damit die Änderungen wieder 'Futsch' sind.

    Danke im Voraus.

  • #2
    <pre>
    type
    TMDS = class(TDataSource)
    private
    FonStateChange: TEvent...;
    protected
    procedure DoStateChange();
    public
    constructor Create(); override;
    published
    property OnStateChange: TEvent... read FOnStateChange write FOnStateChange;
    end;


    constructor TMDS.Create()
    begin
    inherited Create();
    inherited OnStateChange := DoStateChange;
    end;

    procedure TMDS.DoStateChange()
    begin
    if Assigned(FOnStateChange) then FonStateChange();
    end;

    </pre>

    Gruß Hage

    Comment


    • #3
      SUPER !!! Das hat Funktioniert !!!

      Vielen Dank

      Gruß Walte

      Comment

      Working...
      X