如何在TPanel上贴幅位图?(不能用TImage)(300分)

  • 主题发起人 主题发起人 坏蟑螂
  • 开始时间 开始时间

坏蟑螂

Unregistered / Unconfirmed
GUEST, unregistred user!
如何在TPanel上贴幅位图?
TPanel没有Canvas。
我不能用TImage,因为我要在一个TPanel中作按钮的拖放,
如果Panel的客户区被一个TImage填满的话,
Panel就无法接收到拖放的对象。

谢谢!!!
 
实际上 TPanel 是有 Canvas 的,你不信
创建一个 Component 你在这个新的 Component 里,任何代码范围内都可以访问 canvas.

所以特定用途,你最好定制自己的 Component 。
 
坏蟑螂,你将TPanel的DockSite设置为True的话,我试过,就是TImage被设置为alClient,TPanel也是可以接收被拖放的对象的呀,你试试看!
 
to darnis:
你说的对,但Canvas是由TCustomControl引入的,而不是TComponent。对吧?
我再试试。

to qiaoda_ly:
是将TImage的Align属性,设为alClient,不是clClient,你是这个意思吧?
我用delphi5,试过,好像不行。

 
为tpanel对象建立一个canvase不就行了?!
 
哈哈哈哈,是我错了。qiaoda_ly说得对,直接DragDrop就可以。
是我理解错误,误认为在Panel中拖放对象,必须要靠Panel的OnDragOver / OnDragDrop 事件,
实际上在Panel中放个TImage,即使将其Align设为alClient,只要响应Image的OnDragOver / OnDragDrop 事件,
同样可以实现拖放。不用派生新类或作新组件。

感谢各位!!!

 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部