关于制作控件的两个问题?(100分)

  • 主题发起人 主题发起人 snows
  • 开始时间 开始时间
S

snows

Unregistered / Unconfirmed
GUEST, unregistred user!
我想继承TImage作一个按钮控件,实现当鼠标移动到它上面时,换一个图象,
我给它加了一个PictureActive属性,
1、首先定义一个变量:TempPicture:TPicture;
2、然后 TempPicture:=TPicture.Create;
3、执行TempPicture:=Picture; (OnCreate)
当移动到它上面时执行:
4、 Picture:=PictureActive; 改变图象
当移走时执行:
5、 Picture:=TempPicture;
6、 TempPicture.Free; (OnDestory)
现在我可以实现,当鼠标移动到它上面时,换一个图象,但移走时图象却变
不回来,而且只要第2、3、5执行,程序就老死机,请帮我找找问题?
另外,如何给这个控件加上Caption属性,使它显示出来?

 
问题一:没代码,也不太清楚你说的程序死机的含义,最好把代码贴
出来。

问题二:加个属性:CAPTION,再用DrawText写在你的图形CANVAS上。
 
Picture:=PictureActive
不对
应该是picture.assign(pictureActive);
离开时
Picture.Assign(TempPicture);
 
在自己的控件里添加 TPicture类型的控件
不是那么容易的。
建议你看一下delphi提供的源代码。其中对有的控件的代码可以借鉴。
用普通的create,是不行的,还要指定其OnChange事件,用于在图片改变时
进行适当处理

有兴趣多联系。
 
TO SCREEN: 没那么难吧?他只不过想在MOUSEENTER和MOUSELEAVE时切
换两个Bitmap就可以。
 
可以试一下picture.bitmap
 
你可以自己定义两个鼠标消息,分别响应OnMouseEnter和OnMouseOut,
具体方法参见拙文"...",在我的竹叶上(Cernet)
http://asp.gbsource.net/home/happydelphi/quest5.htm
 
谢谢hubdob,我的第一个问题已经解决
第二个问题因为我没有用Canvas,请SCREEN说详细点,包括将Caption显示在旁边
和图象上(透明)两种情况,不行我可以再加分
 
Picture:=PictureActive这样用的却不好。
应该pictur.assign(PictureActive);

 
多人接受答案了。
 
后退
顶部