【问题标题】:TButton does not identify the procedure written by hand delphi fmx手写delphi fmx的程序不识别TButton
【发布时间】:2022-01-18 21:01:08
【问题描述】:

我的表单上有一个 TButton,并且我有一个程序,当单击此按钮时会执行 ShowMessage。简单的。问题是我完全“删除”了这个程序,然后按原样完美地重写了它。问题是按钮不再起作用,没有任何反应。如果我偶然单击 2x,它将引导我手动编写的程序,然后它可以工作。我想知道为什么?

(注意:我在另一个delphi fmx项目中粘贴了360按钮的360代码过程,我不想仅仅为了识别过程而点击360按钮)

谢谢。

【问题讨论】:

  • 重写程序后,您是否记得将它们重新链接到按钮OnClick事件?为什么你有这么多按钮?这对 UI 资源不利,更不用说对 UI 设计有利了。拥有这么多单独的程序也不利于代码设计/维护。所有的程序对不同的按钮做同样的事情吗?您不能使用更少的过程(即 1)利用Sender 参数来检测正在单击的按钮吗?
  • 存在大量按钮是因为它们是为俱乐部销售代币的系统的一部分,其中我有 - 和 + cd product = tag 按钮的按钮。在没有注册产品的情况下,它们是 Visible = False。所有的 - 按钮都做同样的事情,+ 按钮也做同样的事情。他们调用一个程序来执行触发一件商品或从总销售额中减去一件商品的动作。我一直在寻找某种方法来自动自动执行“重读按钮及其程序”。显然它不存在。
  • 我知道这是我的研究不足,但我怎么能使用按下按钮的发送者并在函数中使用它的文本、标签和其他参数呢? Delphi FMX 10.4,我的应用是Android。
  • 在这种情况下,Sender 指向被点击的TButton。因此,只需将Sender 类型转换为TButton,然后根据需要使用其属性,例如:procedure TMyForm.ButtonClick(Sender: TObject); begin ShowMessage(TButton(Sender).Text); end; 然后您可以将该过程分配给所有按钮的OnClick 事件。
  • 对我来说听起来像是使用TFrame 的好例子!

标签: delphi firemonkey


【解决方案1】:

就像雷米勒博所说的!转到按钮上的事件选项卡,双击 onclick 事件,看看它是否会引导您进入您创建的过程!如果它引导你进入程序,但没有任何反应,请尝试删除程序及其相关的所有内容,然后双击 onclick 事件并重新编写代码!

【讨论】:

    【解决方案2】:

    您必须更改表单的 dfm 文件以声明 OnClick = Button1Click; 一种方法是: 右键单击表单并选择“以文本形式查看”并添加到表单结构的基础

    object Form88: TForm88
      Left = 0
      Top = 0
      Caption = 'Form88'
         ...
         ...
    
      TextHeight = 15
      object Button1: TButton
        Left = 248
        ...
        ....
        OnClick = Button1Click
      end
    end
    

    另外,您可以通过编辑器更改dfm文件并使用查找和替换来突然影响表单上的许多更改。

    【讨论】:

    • 非常酷。谢谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-08-05
    相关资源
    最近更新 更多