Delph/Builder拖放图像,图像在离开控制时消失
我有一个实现拖放的树控件。我使用重写的OnStartDrag()来获取我自己的TDragObjectEx,它在拖动时显示图像。这在树控件中完美工作,但只要我离开树控件,图像就会消失。游标保持不变。Delph/Builder拖放图像,图像在离开控制时消失
我试图实现OnDragOver,重置图像,但似乎不工作。
对此有何暗示?我正在使用C++ builder 2010,但delphi会做同样的事情。
更新: 在窗体控件中的每个控件上发现了设置csDisplayDragImage,并在窗体本身中解决了这个问题。有没有一种自动化的方式来让csDisplayDragImage在整个表单中设置,而不必在每个项目的Create中手动设置?
void __fastcall TForm1::FormCreate(TObject *Sender)
{
ControlStyle << csDisplayDragImage;
RMU->ControlStyle << csDisplayDragImage;
Button1->ControlStyle << csDisplayDragImage;
}
如果我记得正确的,你必须包括在其中的你想拖动图像控制“ControlStyle”的[csDisplayDragImage]标志可以看出,当某事。被拖动到它们上面。
更新:设置DragObject的“AlwaysShowDragImages”会导致拖动图像显示在整个桌面上。
显然,每个要显示拖动图像的控件都需要设置csDisplayDragImage
control style。您可以将该标志添加到控件和它用一个简单的函数的所有孩子:
void AddDisplayDragImageStyle(TControl* ctl)
{
ctl->ControlStyle << csDisplayDragImage;
TWinControl* win = dynamic_cast<TWinControl*>(ctl);
if (win)
for (int i = 0; i < win->ControlCount; ++i)
AddDisplayDragImageStyle(win->Controls[i]);
}
有如下形式调用自身:AddDisplayDragImageStyle(this)
。
这有效,但将AlwaysShowDragImages设置为true会更容易。谢谢。 – 2010-02-10 02:38:59
正确...将AlwaysShowDragImages转换为true即可完成作业。 – 2010-02-10 02:38:33