So when you double click on a button and it autocompletes the buttonclick procedure, I'm curious about how the compiler knows which button the function is linked to. For example it would make TForm1.Button1Click(Sender: TObject);
So how does the compiler know which button that is linked too? Does it just parse the procedure name to see what button it is?
You can name the method to any name, and Delphi doesn't parse or use the method name to identify the component or event associated.
If you do it at design time, the event association with a event handler is stored in the DFM file, where you find something like:
object Button1: TButton
Left = 104
Top = 64
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
The OnClick = Button1Click
makes your program associate the method (also known as the event handler) to the event (a special kind of property) of the object at runtime, when the form is created.
You can also associate an event to any compliant method at runtime, for example with this code:
type
TForm1 = class(TForm)
Button1: TButton;
private
procedure MyClick(Sender: TObject);
procedure MyOtherClick(Sender: TObject);
....
procedure TForm1.AssociateClickHandler;
begin
Button1.OnClick := MyClick;
end;
procedure TForm1.MyClick(Sender: TObject);
begin
Button1.OnClick := MyOtherClick; //from now, the other method with handle the event.
end;
At design time, you can write the name you want for the event handler directly in the ObjectInspector, then press Enter and Delphi will create the method with that name for you. If you don't provide a name, Delphi auto-generates the name for the method using the component name, plus the event name without the "On". If the method already exists, the IDE just associate the event with that method.
Write the desired method name:
Press enter:
You can associate the same method to different events of the same object, or to the same event of different objects.
For example, you can associate the MyOwnMethodName shown above to the OnClick of any number of buttons. Usually, the Sender parameter contains a reference to the object that is firing the event.