Delphi - Klasse mit Ereignis

Delphi - Klasse mit Ereignis

Unit mit Klasse

{
  Author  : http://developer.luckie-online.de
  Date    : 2005-03-22
  License : PUBLIC DOMAIN
}

unit Unit2;

interface

uses
  Controls, ExtCtrls, Classes, Dialogs, Forms;

type
  TBallOnClick = procedure(Sender: TObject) of Object;
  TBall = class(TWinControl)
  private
    FImage: TImage;
    FBallOnClick: TBallOnClick;
    procedure FImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
  public
    constructor Create(Owner: TComponent); override;
    property BallOnClick: TBallOnClick read FBallOnClick write FBallOnClick;
  end;

implementation

constructor TBall.Create(Owner: TComponent);
begin
  inherited Create(Owner);
  FImage := TImage.Create(Self);
  FImage.Parent := Owner as TForm;
  FImage.OnMouseDown := FImageMouseDown;
  FImage.Picture.LoadFromFile('c:\winnt\winnt.bmp');
  FImage.Left := 10;
  FImage.Top := 10;
  FImage.Width := 40;
  FImage.Height := 40;
  FImage.AutoSize := True;
  FImage.Show;
end;

procedure TBall.FImageMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
  if Assigned(BallOnClick) then
    BallOnClick(self);
end;

end.

Anwendungsbeispiel

{
  Author  : http://developer.luckie-online.de
  Date    : 2005-03-22
  License : PUBLIC DOMAIN
}

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Unit2;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
    Ball: TBall;
    procedure MyBallOnClick(Sender: TObject);
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.MyBallOnClick(Sender: TObject);
begin
  ShowMessage('Klick');
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Ball := TBall.Create(Form1);
  Ball.BallOnClick := MyBallOnClick;
end;

end.

2012-01-26T23:14:43 +0100, mail[at]michael[Bindestrich]puff.de