Announcement

Collapse
No announcement yet.

Event manuell auslösen

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

  • Event manuell auslösen

    Ich entwickle eine Komponente mit mehreren überlagerten Grafiken, welche je nach Zustand sichtbar sind oder nicht. Das jeweilige Klick-Ereignis einer einzelnen Grafik kann ich zwar problemlos handeln, möchte dies aber nach aussen weitergeben, als OnClick-Event der Komponente. Leider ist das in der Delphi-Hilfe kaum beschrieben.<br>
    In VB gibt es dazu den Befehl RaiseEvent, in Delphi muss es doch einen ähnlichen Befehl geben.<br>
    Weiss jemand rat ?

  • #2
    Hi

    Wenn ich Dich richtig verstanden habe hast Du die OnClick Events der Grafiken abgefangen. Diese Grafiken sind in eine Komponente integriert, richtig ?

    Du definierst folgendes in Deiner Komponente:

    <pre>

    type
    TMyComp = class()
    private
    FOnClick: TNotifyEvent;
    protected
    procedure DoGrafikClick(Sender: TObject);
    public
    constructor Create(AOwner: TComponent); override;
    published
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
    end;

    procedure TMyComp.DoGrafikClick(Sender: TObject);
    begin
    // dieser Code wird ausgeführt aus dem Grafik.OnClick Event
    if Assigned(FOnClick) then FOnClick(Self);
    end;

    constructor TMyComp.Create(AOwner: TComponent);
    begin
    inherited Create(AOwner);
    // erstelle hier Deine Grafiken und
    Grafik1.OnClick := DoGrafikClick;
    Grafik2.OnClick := DoGrafikClick;
    end;

    // andere methode

    type
    TmyComp = class()
    private
    FGrafik1: xxxx
    FGrafik2: xxxx
    function GetOnClick: TNotifyEvent;
    procedure SetOnClick(Value: TNotifyEvent);
    protected
    public
    published
    property OnClick: TNotifyEvent read GetOnClick write SetOnClick;
    end;

    function TMyComp.GetOnClick: TNotifyEvent;
    begin
    Result := FGrafik1.OnClick;
    end;

    procedure TMyComp.SetOnClick(Value: TNotifyEvent);
    begin
    FGrafik1.OnClick := Value;
    FGrafik2.OnClick := Value;
    ...
    end;

    </pre>

    Ich ziehe die erste methode vor da dann die Klasse TMyComp als Dispatcher der Grafik.OnClick Events dient, bzw. so die Event Typen der Grafiken mit dem OnClick: TNotifyEvent nicht identisch sein müssen.

    Die zweite Methode reicht das Event an die integrierten Grafik Objecte weiter. ALLE Grafik-Object können somit immer nur mit ein und dem selben Event verknüpft werden.

    Gruß Hage

    Comment

    Working...
    X