Re: @ operator ? Or maybe not
- From: "Michael Trofimov" <mtrofimov@xxxxxxxxx>
- Date: Fri, 28 Oct 2005 00:18:09 +0400
"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.
.
- References:
- @ operator ? Or maybe not
- From: Tom de Neef
- @ operator ? Or maybe not
- Prev by Date: dynamic object creation
- Next by Date: Re: dynamic object creation
- Previous by thread: Re: @ operator ? Or maybe not
- Next by thread: 3D graphics with Delphi
- Index(es):