Первое сообщение здесь, пожалуйста, простите любые этикетировочные ошибки.Установите событие onclick во время выполнения в Delphi XE
Я создаю приложение для нескольких устройств (FMX) в Delphi XE8, и мне трудно назначить обработчик событий динамически созданной кнопке. Я просмотрел StackOverflow и нашел ответы, связанные с NotifyEvents, поэтому я последовал советам в этих ответах - до сих пор не повезло. Ошибка компиляции: «E2010 Несовместимые типы:« TNotifyEvent »и« Процедура »».
Я собрал простой тестовый пример формы с полем редактирования и статической кнопкой Hello, вторая кнопка создает кнопку «Прощай» и пытается назначить процедуру событию OnClick, но я все еще получаю такая же ошибка.
Насколько я могу судить, я выполнил все требования по обеспечению совместимости процедуры с TNotifyEvent, но даже этот базовый пример не с той же ошибкой. Я ударяю головой о стену, чтобы кто-нибудь, пожалуйста, сообщите мне, что я сделал неправильно?
Большое спасибо.
unit Dynamic_Button_Test1;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.StdCtrls,
FMX.Controls.Presentation, FMX.Edit;
type
TForm1 = class(TForm)
Edit1: TEdit;
Hello: TButton;
Create_GoodBye: TButton;
procedure HelloClick(Sender: TObject);
procedure Create_GoodByeClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure GoodbyeClick(Sender: TObject) ;
end;
var
Form1: TForm1;
implementation
{$R *.fmx}
procedure TForm1.Create_GoodByeClick(Sender: TObject);
var
New_Button : TButton ;
begin
New_Button := TButton.Create(Form1);
New_Button.Parent := Form1 ;
New_Button.Text := 'Goodbye' ;
New_Button.Visible := True ;
New_Button.Margins.Left := 50 ;
New_Button.Margins.Right := 50 ;
New_Button.Margins.Bottom := 30 ;
New_Button.Height := 50 ;
New_Button.Align := TAlignLayout.Bottom ;
New_Button.OnClick := TForm1.GoodbyeClick ;
end;
procedure TForm1.HelloClick(Sender: TObject);
begin
Edit1.Text := 'Hello' ;
end;
procedure TForm1.GoodbyeClick(Sender: TObject);
begin
Edit1.Text := 'Goodbye' ;
end;
end.
'New_Button.OnCl ick: = TForm1.GoodbyeClick' → 'New_Button.OnClick: = Form1.GoodbyeClick' или просто' New_Button.OnClick: = GoodbyeClick'. – TLama