Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Ereignisse eines Events bei abgeleiteter Klasse Definieren (https://www.delphipraxis.net/57661-ereignisse-eines-events-bei-abgeleiteter-klasse-definieren.html)

Hador 24. Nov 2005 20:22


Ereignisse eines Events bei abgeleiteter Klasse Definieren
 
Hallo Leute.

Ich habe dass Problem, dass ich eine Klasse von TImage ableiten möchte, jedoch schon vorgeben möchte, was z.B. bei einem OnMouseOver Ereignis getan wird.
Gibt es irgendeine Möglichkeit, einem Event beispielsweise eine feste Procedure zuzuweisen?

sh17 24. Nov 2005 20:25

Re: Ereignisse eines Events bei abgeleiteter Klasse Definier
 
weise doch in der abgeleiteten Klasse dem OnMouseOver Ereignis einfach eine Klassenprocedure zu. Oder versteh ich da was falsch?

Jelly 24. Nov 2005 20:31

Re: Ereignisse eines Events bei abgeleiteter Klasse Definier
 
Zitat:

Zitat von sh17
weise doch in der abgeleiteten Klasse dem OnMouseOver Ereignis einfach eine Klassenprocedure zu. Oder versteh ich da was falsch?

Dadurch unterbindest Du aber nicht, dass der Nutzer selbst noch was in OnMouseOver schreibt.

Es geht also darum, das OnMouseEvent in der neuen Komponente nach aussen hin ganz zu verstecken. Das geht so von TImage abgeleitet nicht. Die meisten Komponten sind aber selbst von einer Basisklasse abgeleitet, welche nach aussen hin noch keine Events offen legt, und in diesem Fall dürfte die TCustomImage heissen. Die gilt es dann als Vorfahren der eigenen Klasse zu wählen.

Hador 24. Nov 2005 20:36

Re: Ereignisse eines Events bei abgeleiteter Klasse Definier
 
Danke dass werde ich dann mal versuchen

SirThornberry 24. Nov 2005 20:58

Re: Ereignisse eines Events bei abgeleiteter Klasse Definier
 
die meisten Klassen haben solche Funktionen wie MoudeDown etc. im Protected. Wenn dem nicht so ist kann man das Eregnis einfach neu definieren.
Delphi-Quellcode:
type
  TNewImage = class(TImage)
  private
    fOnMouseOver: TNotifyEvent;
    procedure FOnMouseOverProc(Sender: TObject);
  public
    constructor Create(AOwner: TComponent); override;
  published
    property OnMouseOver: TNotifyEvent read fOnMouseOver write fOnMouseOver;
  end;

constructor TNewImage.Create(AOwner: TComponent); override;
begin
  inherited Create(AOwner);
  inherited OnMouseOver := FOnMouseOverProc;
end;

procedure TNewImage.FOnMouseOverProc(Sender: TObject);
begin
  //Quelltext hier plazieren was vor auslösen des Events passieren soll
  if Assigned(fOnMouseOver) then
    fOnMouseOver(Sender);
  //Quelltext hier plazieren was nach auslösen des Events passieren soll
end;


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz