【发布时间】:2016-08-05 12:16:33
【问题描述】:
这是真的吗?
例如,我有form1 和button1。我只能在设计时分配给button1.onClickButton26Click。
TForm1 = class(TForm)
procedure Button26Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
我也有第 2 单元,例如:
unit ProcAndFunc;
interface
uses sysutils,forms;
procedure createArrTable(Sender: TObject);
我可以在设计时分配 createArrTable 到button1.onClick 吗?
谢谢。
好的。单元1
TForm1 = class(TForm)
myButton1 : TButton;
procedure Button26Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
单元2
TForm2 = class(TForm)
myButton2 : TButton;
procedure ButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
只是想知道它是如何工作的。我应该在unit2 中更改什么,我可以将ButtonClick 分配给myButton1.OnClick
How to make a separate unit for event methods, which IDE allows me to assign to component events at design time? 看来我重复了问题。但这个答案不适合我。还有其他方法吗?
EDIT3 (08.08.2016): 我创建了这个 TDataModule;
unit Unit3;
interface
uses
System.SysUtils, System.Classes,dialogs;
type
TDataModule3 = class(TDataModule)
procedure Click2(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
DataModule3: TDataModule3;
implementation
{%CLASSGROUP 'Vcl.Controls.TControl'}
{$R *.dfm}
procedure TDataModule3.Click2(Sender: TObject);
begin
ShowMessage('hello world');
end;
end.
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, unit3;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage('hello world');
end;
end.
我仍然无法在设计时将 DataModule3.Click2 分配给 button1.onclick。 (screenshot)。我还需要做什么?
【问题讨论】:
-
不,有两个原因。 1)它不是一个TNotifyEvent,它是一个对象的过程(它是一个类的成员)。 2) Object Inspector 不知道它的存在,因为它不是一个正确定义(和发布)的过程。
标签: delphi eventhandler