unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
//Die "neue Klasse" kann alles was TImage kann + ein neues Property namens onVisibleChange
type TImage=class(ExtCtrls.Timage)
private
//hier wird die Methode, die gestartet werden soll in einer Variablen gespeichert
FonVisibleChange:TnotifyEvent;
//Die Funktion überschreiben wir mal, um das Ereignis auszulösen
procedure visiblechanging;
override;
published
//Und noch ein schönes Property drumrum, nicht zwingend notwendig, aber schöner ;-)
property onVisibleChange:TNotifyEvent
read FOnvisibleChange
write FOnVisibleChange;
end;
//zum Testen
type
TForm1 =
class(TForm)
Button1: TButton;
Edit1: TEdit;
Image1.TImage;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure ImageVisibleChange(sender:Tobject);
private
{ Private-Deklarationen }
x:integer;
public
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TmyImage.visiblechanging;
//Diese Funktion wird bei setvisible aufgerufen und ist im Original leer
begin
//unser neues Ereignis auslösen
FOnVisibleChange(self);
//falls sie doch nicht leer ist
inherited visiblechanging;
end;
procedure TForm1.Button1Click(Sender: TObject);
//Ereignis auslösen ;-)
begin
image1.visible:=not image1.visible;
end;
procedure TForm1.ImageVisibleChange(sender:Tobject);
//Die Ereignisbehandlungsroutine
begin
inc(x);
edit1.Text:=inttostr(x);
end;
procedure TForm1.FormCreate(Sender: TObject);
//Erstellen des Objektes und Ereigniszuweisung
begin
image1.FonVisibleChange:=ImageVisibleChange;
end;
end.