【问题标题】:TCard class does not have public OnShow and OnHide eventsTCard 类没有公开的 OnShow 和 OnHide 事件
【发布时间】:2020-10-25 13:50:38
【问题描述】:

在 Delphi 10.4 VCL 应用程序中,TCard(作为TCardPanel 的容器项)没有公共OnShowOnHide 事件(如TTabSheet 有)。

因此,当特定的TCard 被激活时,TCard.OnEnter 事件处理程序不会被触发。 TCard.OnEnter 事件处理程序仅在例如单击TCard 上的控件。

示例代码:

CardPanel1.ActiveCard := Card2;

在这种情况下,TCard.OnEnter 事件不会被触发!

是否可以使用公共 OnShowOnHide 事件升级 TCard 类?或者是否可以模拟这些事件?

【问题讨论】:

  • 不能只使用TCardPanel的OnCardChange事件吗?
  • @UweRaabe 我尝试使用 TCardPanel 的 OnCardChange 事件:当我尝试在该事件处理程序中使用 PrevCard.NameNextCard.Name 作为字符串来识别卡时,我会运行-时间错误。现在,我可以使用NextCard.Caption 来识别卡,但这会导致“代码气味”,因为标题可能会在运行时发生变化。 CLEANEST 解决方案将升级到TCard.OnShow 事件。
  • 你为什么不用ActiveCard
  • @Olivier 在哪种情况下?
  • 为什么要提到名字?只需写if NextCart = Card1 或 `if PrevCard = Card2' 或任何有意义的内容。在不了解实际用例的情况下很难给出建议。

标签: delphi delphi-10.4-sydney


【解决方案1】:

使用 TCardPanel 的 OnCardChange 事件并将 PrevCard 和/或 NextCard 与您的实际卡片实例进行比较。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-10-27
    • 2011-02-20
    • 1970-01-01
    • 2018-05-07
    • 1970-01-01
    • 2010-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多