【问题标题】:Delphi TImage Over A TSpeedButtonDelphi TImage 通过 TSpeedButton
【发布时间】:2013-01-18 15:47:02
【问题描述】:

我想在 TImage 上方放置一个 TButton 或 TSpeedButton 并使按钮透明,以便您仍然可以单击它,但您看到的是图像而不是按钮。我似乎无法让它工作,我将 TSpeedButton 更改为透明,但它似乎没有做任何事情。

我也尝试将按钮设置为 false,但随后它变得不可点击。有没有办法让按钮不可见而不失去其功能?

谢谢。

【问题讨论】:

  • 为什么需要这个?您可以简单地处理TImageOnClick 事件。
  • 您的文字问题描述了与标题相反的内容。什么是正确的?
  • 两者,@Jachguate。按钮应位于图像顶部以处理点击,但图像应位于顶部以进行绘画。
  • @Rob 你只能有一个在另一个之上,恕我直言,透明度是另一回事。
  • 对,@Jachguate。用户希望 visual 效果相当于按钮顶部的图像,但 interactive 效果相当于图像顶部的按钮。虽然你和我都知道 TImage 和 TSpeedButton 不是这样工作的,但对用户来说并不明显。因此,这个问题。透明度似乎是相关的,如果您认为使按钮透明可以让您拥有对点击事件做出反应但不会遮挡图像的东西。

标签: delphi button transparent visible timage


【解决方案1】:

您不需要按钮。删除它并改为处理图像的 OnClick 事件。

如果您需要知道图像上被点击的点,请从您的事件处理程序中调用 GetMessagePos。

【讨论】:

  • 好!似乎他无论如何都没有按钮动画(或者他不会尝试使按钮不可见)。
  • +1 对于方便的GetMessagePos,我不知道它的存在。
  • 或者,使用OnMouseDown 事件并将提供的X、Y 坐标保存在某处以供OnClick 事件使用。
  • @Remy 好吧,这肯定是比 GetMessagePos 更糟糕的选择
  • @DavidHeffernan:我没有说要使用OnMouseDown 作为点击事件,只是为了保存TImage 相对坐标以便在实际OnClick 事件中使用。 OnMouseDown 总是首先出现。是的,我认为使用OnMouseDown 处理鼠标位置比使用GetMessagePos() 更可靠。否则,请在 OnClick 事件本身内使用 TMouse.CursorPosTControl.ScreenToClient()
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-17
  • 1970-01-01
  • 1970-01-01
  • 2013-09-26
  • 2016-08-30
  • 1970-01-01
相关资源
最近更新 更多