delphi - 如何根据触发事件处理程序的 TAction 来更改其行为?

标签 delphi parameters event-handling taction

我有一些菜单项,其操作如下:

procedure TMISMainFrm.ActiSalesInvoiceExecute(Sender: TObject);
begin
  if CheckMdiList('Sales Invoice') then
    BEGIN
      SalesInvFrm := tSalesInvFrm.Create(Self,0,UserIdNo,1,1);
      SalesInvFrm.Show;
    END;
end;

可以从多个位置调用上述操作,但第二个参数(0)可能会改变。如何传递所需的参数,这样我就不必重新编码例程?

最佳答案

一种常用的简单方法是设置 Tag Action 的属性。显然,每个 Action 都应该不同。然后你像这样改变你的执行处理程序:

procedure TMISMainFrm.ActiSalesInvoiceExecute(Sender: TObject);
begin
  if CheckMdiList('Sales Invoice') then
    BEGIN
      SalesInvFrm := tSalesInvFrm.Create(Self,(Sender as TAction).Tag,UserIdNo,1,1);
      SalesInvFrm.Show;
    END;
end;

关于delphi - 如何根据触发事件处理程序的 TAction 来更改其行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7431114/

相关文章:

delphi - 我的 Delphi 应用程序完成初始化后,我应该在哪里放置要执行的代码?

delphi - 如何自定义Hint Font.Size?

ruby-on-rails - Rails 参数未传递给 'params' 变量

Javascript 事件处理和流程控制

delphi - Delphi 2009 中的 Zlib

delphi - 我可以创建一个与自身类型相同的对象吗?

powershell - 如何将今天的日期作为 powershell 中参数的默认值

Excel - 以单元格值作为参数对 SSAS 多维数据集进行 MDX 查询

javascript - 从可拖动组件中移除事件监听器

javascript - 为什么 onclick 处理程序在 javascript 中与 innerHTML 一起使用时不起作用