Forum > LCL
OnClick procedure for Control Arrays.
(1/1)
Hopestation:
Hello.
In Delphi4 I can create an array of radio buttons and use a common OnClickRdBtn call.
Here is my Delphi code:-
uses
..
procedure RdBtnClick(Sender: TObject);
..
implementation
..
procedure TForm1.FormCreate(Sender: TObject);
Var
N: Integer;
begin
For N := 0 to 9 Do
begin
RdBtn[N] := TRadioButton.Create(Owner);
RdBtn[N].Parent := RadioGroup1;
RdBtn[N].OnClick := RadioButtonClick;
end;
..
procedure TForm1.RdBtnClick(Sender: TObject);
Var
Source: TRadioButton;
N: Integer;
begin
Source := TRadioButton(Sender);
N := Source.Tag;
Edit1.Text := IntToStr(N);;
end;
This works and operates on the selected button.
When I import it into Lazarus it still works.
When I try to create the form in Lazarus I get the message not enough paramerters, but nothing to tell me what parameters are required.
Here is my Lazarus code:-
uses
..
procedure RadioButtonClick(Sender: TObject);
..
implementation
..
procedure TForm1.FormCreate(Sender: TObject);
Var
N: Integer;
begin
For N := 0 to 9 Do
begin
RdBtn[N] := TRadioButton.Create(Owner);
RdBtn[N].Parent := RadioGroup1;
RdBtn[N].OnClick := RadioButtonClick;
end;
end;
..
procedure TForm1.RadioButtonClick(TRadioButton);
Var
Source: TRadioButton;
begin
Frm_Main_1.Edit3.Text := Copy(RadioButton9.Caption,1,1);
end;
The following messages are displayed:-
type1.pas(58,41) Error: Wrong number of parameters specified for call to "RadioButtonClick"
type1.pas(18,15) Hint: Found declaration: TForm1.RadioButtonClick(TObject);
type1.pas(62,47) Fatal: Syntax error, ":" expected but ")" found.
What am I doing wrong?
Thanks
Roger.
fabienwang:
as you defined the method:
procedure TForm1.RadioButtonClick(TRadioButton);
you should add this in the type:
procedure RadioButtonClick(TRadioButton);
OR
you can try
procedure RadioButtonClick(TRadioButton); instead of TForm1.
eny:
Also, try this:
--- Code: ---RdBtn[N].OnClick := @RdBtnClick;
--- End code ---
Note the @-symbol.
Hopestation:
Thank you both for your help.
Using @ worked. I don't need this in Delphi4.
Is there a simple explanation of why it is needed in Lazarus?
Regards
Roger
felipemdc:
Free Pascal support various Pascal dialects. If you want to use the Delphi dialect then you should use the {$mode delphi} directive in your source code.
Navigation
[0] Message Index