为了阻止挑剔者,让我先说一下,我在这里搜索并找不到答案,是的,我也滚动了“类似问题”。... 添加到TForm的快捷方式
我想将一些快捷方式从桌面拖放到我的应用程序中的TForm。我正在使用Anders Melander的精彩Drag Drop Suite(DDS)。
我尝试在表单上放置一个TImage,但是DDS没有放到图像上,所以我添加了一个带有TImage的TPanel。然后我可以放在面板上并将图像分配给TImage.Picture。问题是Panel没有透明属性,因此表单上的快捷方式看起来很笨重,后面有可见的Panel。
我需要能够放弃TImage或使底层TPanel透明。
任何人都可以帮助使用这些选项中的任何一个的代码片段,或者更好的是,将快捷方式直接放到我的表单上的方法。
由于
答案 0 :(得分:3)
巧合的是,我需要将TWinControl(带窗口句柄的每个可见控件的基础,包括TPanel)透明化。我找到了很多结果并将它们应用到this answer。
我实施拖放已经有一段时间了,但我假设您调用了一些API并将其传递给面板的句柄?这回答了为什么你不能使用TImage的问题。 TImage是一个图形控件,一个没有句柄的控件,依赖于它的父级来接收消息和绘制自己。
应该可以使用表单,因为它也有句柄。
答案 1 :(得分:1)
如果TImage
直接位于TForm
上,那么让TForm
处理丢弃,不需要TPanel
。 OLE Drag& Drop操作(Ander的组件实现)提供了拖放发生的坐标。 TForm
应该能够检测拖动何时超过TImage
占用的区域以及拖动的数据类型,并且只允许删除该区域内支持的类型,提取丢弃的数据并根据需要更新TImage
,并拒绝与该标准不符的任何其他内容。