将函数添加到事件运行时

德米特里·索科洛夫
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'

维多利亚

您必须在类中创建匹配的事件方法原型,然后将其分配给事件处理程序(对于TDBGrid控件的OnDblClick事件,它是TNotifyEvent),因此您可以编写例如:

type
  TForm1 = class(TForm)
    DBEdit1: TDBEdit;
    DBGrid1: TDBGrid;
  private
    procedure Form1Create(Sender: TObject);
    procedure MyGridDblClick(Sender: TObject);
  end;

implementation

procedure TForm1.Form1Create(Sender: TObject);
begin
  { it doesn't matter if you create the component at runtime,
    this is a common principle of assigning event methods at
    runtime - they just have to match the method prototypes }
  DBGrid1.OnDblClick := MyGridDblClick;
end;

procedure TForm1.MyGridDblClick(Sender: TObject);
begin
  { to access the grid instance in case more than one grid
    uses this handler you can use TDBGrid(Sender) or safer
    cast (Sender as TDBGrid) }
  DBEdit1.Text := TDBGrid(Sender).DataSource.Dataset.FieldByName('ID').Text;
end;

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将事件添加到在运行时创建的按钮

来自分类Dev

如何将事件添加到在运行时创建的元素?

来自分类Dev

在运行时将模块添加到python

来自分类Dev

在运行时将项目添加到ComboBox?

来自分类Dev

改进:将运行时参数添加到接口?

来自分类Dev

在运行时将后缀添加到枚举

来自分类Dev

在AsyncTask运行时将文本添加到TextView

来自分类Dev

在运行时将PictureBox添加到窗体

来自分类Dev

在运行时将片段添加到TabLayout

来自分类Dev

将Nvidia运行时添加到Docker运行时

来自分类Dev

C#将事件处理程序添加到在运行时从程序集加载的类中

来自分类Dev

如何在运行时使用VBA将按钮添加到MS Access表单并将代码添加到_Click()事件

来自分类Dev

属性/方法的名称长度是否会将运行时添加到函数?

来自分类Dev

将运行时JavaScript值添加到Liferay动态数据列表

来自分类Dev

在运行时将SubmitHandler添加到jQuery validate()中

来自分类Dev

在运行时将半透明覆盖层添加到活动背景

来自分类Dev

VBA:在运行时将文本框添加到用户窗体

来自分类Dev

如何在运行时将动画控制器添加到角色?

来自分类Dev

将N个项目添加到ArrayList的Big-O运行时

来自分类Dev

在Visual Basic中在运行时将图像添加到ImageList

来自分类Dev

如何在运行时将ContextMenu添加到按钮

来自分类Dev

Firemonkey:在运行时将子控件添加到TListViewItem

来自分类Dev

PyQt:在运行时将小部件添加到scrollarea

来自分类Dev

将OCMock添加到Xcode不会在运行时链接

来自分类Dev

在运行时将TypeConverter属性添加到枚举

来自分类Dev

将类路径容器添加到Eclipse插件的运行时

来自分类Dev

在运行时将字符添加到字符串末尾

来自分类Dev

在应用运行时将路由添加到Vue.js路由器

来自分类Dev

在应用程序运行时将视图添加到vuejs路由器

Related 相关文章

  1. 1

    将事件添加到在运行时创建的按钮

  2. 2

    如何将事件添加到在运行时创建的元素?

  3. 3

    在运行时将模块添加到python

  4. 4

    在运行时将项目添加到ComboBox?

  5. 5

    改进:将运行时参数添加到接口?

  6. 6

    在运行时将后缀添加到枚举

  7. 7

    在AsyncTask运行时将文本添加到TextView

  8. 8

    在运行时将PictureBox添加到窗体

  9. 9

    在运行时将片段添加到TabLayout

  10. 10

    将Nvidia运行时添加到Docker运行时

  11. 11

    C#将事件处理程序添加到在运行时从程序集加载的类中

  12. 12

    如何在运行时使用VBA将按钮添加到MS Access表单并将代码添加到_Click()事件

  13. 13

    属性/方法的名称长度是否会将运行时添加到函数?

  14. 14

    将运行时JavaScript值添加到Liferay动态数据列表

  15. 15

    在运行时将SubmitHandler添加到jQuery validate()中

  16. 16

    在运行时将半透明覆盖层添加到活动背景

  17. 17

    VBA:在运行时将文本框添加到用户窗体

  18. 18

    如何在运行时将动画控制器添加到角色?

  19. 19

    将N个项目添加到ArrayList的Big-O运行时

  20. 20

    在Visual Basic中在运行时将图像添加到ImageList

  21. 21

    如何在运行时将ContextMenu添加到按钮

  22. 22

    Firemonkey:在运行时将子控件添加到TListViewItem

  23. 23

    PyQt:在运行时将小部件添加到scrollarea

  24. 24

    将OCMock添加到Xcode不会在运行时链接

  25. 25

    在运行时将TypeConverter属性添加到枚举

  26. 26

    将类路径容器添加到Eclipse插件的运行时

  27. 27

    在运行时将字符添加到字符串末尾

  28. 28

    在应用运行时将路由添加到Vue.js路由器

  29. 29

    在应用程序运行时将视图添加到vuejs路由器

热门标签

归档