【发布时间】:2017-06-04 18:32:18
【问题描述】:
procedure TFormOrderAdd.DBEdit1DblClick(Sender: TObject);
var
FormSelectEmp: TForm;
SelectEmpDBGrid: TDBGrid;
begin
FormSelectEmp := TForm.Create(Self);
SelectEmpDBGrid := TDBGrid.Create(Self);
SelectEmpDBGrid.Parent := FormSelectEmp;
SelectEmpDBGrid.Align := alClient;
SelectEmpDBGrid.DataSource := DMl.DataSourceViewEmpList;
FormSelectEmp.ShowModal;
SelectEmpDBGrid.OnDblClick := AddSelectedEmp;
FormSelectEmp.Close;
end;
procedure TFormOrderAdd.AddSelectedEmp;
begin
DBEdit1.Text := Dml.ADOQueryViewEmpList.FieldByName('ID').Text;
end;
如何将我的程序添加到 OnDblClick 事件? 我尝试分配,但编译器说:[dcc32 Error] OrderAdd.pas(66): E2010 Incompatible types: 'TNotifyEvent' and 'procedure, untyped pointer or untyped parameter'
【问题讨论】:
-
与分配任何其他属性的方式相同,只需传递处理程序的名称。另外,那不应该在
ShowModal之前吗?你的程序是什么样的?你不能随便通过。 -
我的意思是,
AddSelectedEmp看起来像什么?实际上,您似乎正在尝试call它而不是assign它。从中删除(Self)。请Edit您的问题提供这些完整的详细信息。 -
您似乎没有提供适当的事件处理程序。它必须有正确的签名。
AddSelectedEmp上面应该有(Sender: TObject)。请在此处阅读:stackoverflow.com/a/42956399/988445 -
@димасоколов:可能是这样,但您仍然必须分配具有正确签名的程序。你的
TFormOrder.AddSelectedEmp应该是procedure TFormOrder.AddSelectedEmp(Sender: TObject);。 -
@Victoria:当然,但我只是用另一条评论回应了他的评论。您的示例很好,但我尝试使用他的代码(使用他的过程名称)而不是您的代码来拼写它。我的印象是他不太明白这一点。
标签: delphi