procedure ButtonClick(Sender:TObject) ;
begin
//whatever
end;
procedure SomeProcedure...
var aButton:TButton;
begin
aButton := TButton.Create(nil) ;
aButton.OnClick = ButtonClick
...
end;
You will get the next error:
Incompatible type: 'method pointer and regular procedure'.
The problem is that a method pointer (OnClick) needs to be a procedure of an object (like TForm), not a regular procedure.
One way around is to create an object to define the procedure. You can start by creating a dummy class...
interface
type
TEventHandlers = class // create a dummy class
procedure ButtonClick(Sender: TObject) ;
end;
...
var EvHandler:TEventHandlers;
implementation
procedure TEventHandlers.ButtonClick(Sender: TObject) ;
begin
// your code here
end;
...
procedure SomeProcedure...
var aButton:TButton;
begin
aButton := TButton.Create(nil) ;
aButton.OnClick = ButtonClick;
...
end;
This compiles!
}
~~~~~~~~~~~~~~~~~~~~~~~~~
Delphi tips navigator:
» Match column title alignments with field alignments in DBGrid
« How to shuffle (randomize position) array values

