急!急!(200分)

  • 主题发起人 主题发起人 wsllb
  • 开始时间 开始时间
W

wsllb

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大侠,我想做一个可以将TTreeView中的节点拖到一个类似于TDrawGrid的控件中去,
在这个控件中再生成一个个类似于Button的东东,可以任意拖动,并且可以点击,而且
Button的位置要规则,也就是说每个Button大小一样,刚好在一个网格里,无论怎么拖动,
它的位置都要刚好在一个网格里。
我现在用的是TDrawGrid,现在问题出现了,我在生成Button的时候,规定了它的left
和top,结果在拖动ScrollBars的时候,Button的位置不变,为了解决这个问题,我都焦头烂额了。
不知各位大侠有没有什么办法,或者是提供另外的控件来解决。
 
您在DrawGrid中不要动态创建Button控件,Button可以通过DrawGrid中的OnDrawCell事件
自己画出(该事件中已知格子的矩形区域Rect,通过Canvas可以随意画)。
 
我没做过,不过我建议你依次试试以下的方法,
以下的方法是由易到难的,我不知道那一种可行,所以建议你依次试试:

1。
把 button 的 parent 设为你的 TDrawGrid,如果设计的时候设不了,就在程序中设

2。
如果 1 不行,在 OnTopLeftChanged 中移动 button

3。
如果 2 不行,继承 TDrawGrid 写一个自己的 TDrawGrid,
响应 WM_HSCROLL 和 WM_VSCROLL,在这两个消息事件中处理

4。
如果 3 不行,继承 TDrawGrid 写一个自己的 TDrawGrid,
看看父类那些事件消息影响到 grid 的卷动, override and inherited 它们,
自己移动 button.
 
To tujh:
我希望做出能够拖动的效果,画布不能达到这个效果,我认为只有类似于Button的控件
才合适,除非画布能够画出3D效果。

To 940801:
你说的前两种方法都不行,做控件还可以,但是我还不知道如何做控件;而且我的Button
还要该造,也要做一个控件,让它能够有一个连接到数据库的属性。请问你能给我一些指点吗?

再次感谢两位,一定给你们加分!
 
正好也想做一个自己的 grid,周末的时候我帮你想想吧
 
在OnDrawCell事件里再重新定Button的left和top吧,
Button的parent要设置为drawgrid ,还要注意ondrawcell调用的条件!
 
多人接受答案了。
 
后退
顶部