【问题标题】:How can I make my custom control fully clickable at designtime?如何让我的自定义控件在设计时完全可点击?
【发布时间】:2015-07-15 15:11:25
【问题描述】:

我创建了一个从TScrollingWinControl 派生的自定义控件,并从它的构造函数创建了一个从TGraphicControl 派生的另一个自定义类的新实例。

除了在设计时,这些控件工作得很好。如果我使用鼠标单击控件的滚动框部分,则 Delphi 设计器会显示控件的手柄,然后可以从那里移动和调整大小等。但是,如果我单击 TGraphicControl 所在的控件则父控件(TScrollingWinControl)不显示抓取句柄且无法移动或调整大小。

所以我的问题是,我如何告诉我的自定义控件,通过单击父级内部的 TGraphicControl,应该允许在设计时移动和调整大小?

我尝试查看 csDesignInteractive 等 ControlStyle 标志并在设计时重新构建包和测试,但似乎没有任何区别。

我还尝试将我的 TGraphicControl 设置为 Enabled := False 并在设计时再次重新构建包和测试,但这里的区别在于 TGraphicControl 现在可以像任何标准控件一样在设计时选择,只是它现在有它自己的抓取手柄而不是父手柄 (TScrollingWinControl)。

我需要怎么做才能在单击 TGraphicControl 时父控件 (TScrollingWinControl) 显示抓取手柄并且可以移动和调整大小?

【问题讨论】:

  • 正如我提出的问题一样,我想出了答案 - 在从构造函数创建 TGraphicControl 时,我传递了 nil 而不是 Self,现在它在设计时功能齐全。跨度>
  • 您可以在下面发布您的问题的答案。
  • @JerryDodge 我现在已经回答了。那是我多年来一直在挠头试图弄清楚我需要做什么的时刻之一,然后就像我问这个问题一样,我改变了一个简单的东西,比如所有者,它起作用了,哦,好吧:)
  • 顺便说一句,您的错误似乎是防止这些问题的绝佳解决方案!
  • @NGLN 我猜这是看待它的一种方式,我发现这种行为/错误比什么都重要:)

标签: delphi delphi-xe7


【解决方案1】:

当我问这个问题时,我意识到了答案。

在我创建TGraphicControl 的构造函数中,我为所有者传递了nil。我现在已将其更改为 Self,并且该控件现在可以正常运行,因为在设计时选择我的控件的任何部分都会显示父 TScrollingWinControl 的抓取句柄。

【讨论】:

    猜你喜欢
    • 2011-02-05
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    • 2013-03-04
    • 1970-01-01
    • 1970-01-01
    • 2012-09-09
    相关资源
    最近更新 更多