Re: @ operator ? Or maybe not




"Tom de Neef" <tdeneef@xxxxxxxx> wrote in message
news:435d4f0c$0$11066$e4fe514c@xxxxxxxxxxxxxxxxx
> Suppose
>
> type
> myClass = class
> button : Tbutton;
> procedure method1(Sender: TObject);
> procedure method2(Sender: TObject);
> end;
>
> And somewhere I've assigned
> myClass.button.OnClick:=myClass.method1;
>
> How can I now verify if the OnClick is assigned to method1 or method2 ?
> I'd like to do
> button.enabled:=(@button.Onclick = @method1);
>
> But that isn't valid...
>
> Kind regards,
> Tom
>
>
Perhaps, the following code is not that you wanted exactly, but it works
under Delphi7.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls;

type

TForm1 = class(TForm)

ButtonM1: TButton; // ButtonM1.Caption := 'Set method1'

ButtonM2: TButton; // ButtonM2.Caption := 'Set method2'

ButtonSomewhere: TButton;

LabelMethodSet: TLabel;

LabelMethodCall: TLabel;

procedure ButtonM1Click(Sender: TObject);

procedure ButtonM2Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure ButtonSomewhereClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

myClass = class (TButton)

button : Tbutton;

procedure method1(Sender: TObject);

procedure method2(Sender: TObject);

end;

var

Form1: TForm1;

myObj : myClass;

implementation

{$R *.dfm}

procedure myClass.method1(Sender: TObject);

begin

Form1.LabelMethodCall.Caption := 'method1';

end;

procedure myClass.method2(Sender: TObject);

begin

Form1.LabelMethodCall.Caption := 'method2';

end;

procedure TForm1.ButtonM1Click(Sender: TObject);

begin

myObj.OnClick := myObj.method1;

LabelMethodSet.Caption := 'method1';

end;

procedure TForm1.ButtonM2Click(Sender: TObject);

begin

myObj.OnClick := myObj.method2;

LabelMethodSet.Caption := 'method2';

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

myObj := myClass.Create(Form1);

InsertControl(myObj);

myObj.Top := 100;

myObj.Left := 100;

myObj.Caption := 'myObj';

end;

procedure TForm1.ButtonSomewhereClick(Sender: TObject);

var

a1,a2 : TNotifyEvent; // TNotifyEvent = procedure(Sender: TObject) of
object;

begin

a1 := myObj.OnClick;

a2 := myObj.method1;

myObj.Enabled := @a1 = @a2;

end;

end.


.


Quantcast