对象名转换字符串问题,高分相赠! image22.name就是了呀,不用什么转换直接用就行了。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 还有,在用paintbox进行图形绘制时,如被其他窗口遮挡则显示后即擦除了所画图形,我看了以前的帖子,还没有解决的办法,难道除了重新绘制外真的没有其他方法了吗?好象在VC中设置invalidate即可,不知在delphi中应如何解决,望高人予以指教! invalidate就是重画,一样的,呵呵,你如果把画图的函数写在onpaint事件中的话,就可以也就是相当于调用了invalidate 各位误解了我的意思,在我的程序中大约添加了100多个image,从image1到image100,用鼠标右键单击任一image后进行某项操作,操作中我希望知道到底单击的是哪一个,源码如下: MyImg:=FramePopupMenu.PopupComponent as TImage;比如我单击的是image22,但我应如何将其对象名转化为字符串呢? to netlib:但我的绘制过程是随机的,就象“附件”中的画图程序,用鼠标随意乱画后,遮挡后即不会被清除。 我看不可能办到,Image1,Image2只是一下标识复而已,在编译时实际上已经被编译器转换为一个指定的指针值,也就是说内存中根本就不存在Image1,Image2这些东西了,又如何能得到1,2. 直接调用invalidate重画被遮部分 用Click 事件中的Sender对象,(Sender as TImage).name取得对象名称 MyImg:=FramePopupMenu.PopupComponent as TImage;if Assigned(MyImg) then ShowMessage(MyImg.Name); 当你点击Image控件产生的事件写代码:var sName:string;//对象名 if (sender is TImage) then begin sName:=(sender as TImage).Name end; 取对象名称用(sender as TImage).name是可以的,但你让系统重画不擦除你,可以用截获WM_ERASEBKGND系统消息,但这样会带来一大堆画图的事件,因为应该程序的界面都要你自己处理了,还有一种方法,就是你把你乱画的东西通过一定的方法保存起来,重画的时候画上去 看来大家都没有看清jingfan () 的要求,他要的是Image1,Image2这些东西,(Sender as TImage).Name返回的是"TImage",不管是单击Image1还是Image2还是其它的Image?,返回值都永远是"TImage" 谢谢各位的建议,对象名转换为字符串我已经实现了,分已送出,但paintbox问题仍不知如何解决,我本来想利用paintbox的enable属性,开始设为true,画完后设为false,但设为false后所画的图形即消失,不知何故?另:如果采用其他控件,能否实现画图后遮挡不消除吗?期待着各位高人的指点! 还是关于存储图片的问题 一个关于ado的网页应用问题! 如何判断程序是开机自动运行的,还是用户双击运行的? 大家来看看这段代码有什么问题? 动态生成菜单 求使用编程创建CHM文件的方法。 我的程序在我们的简体操作系统上可以正常运行,但是到了繁体上操作系统上就会出错 求Delphi5函数手册(或下载地址),有较详细使用说明的! 给10~160 p报酬 再来送分:装ADSL了,呵呵,下载130K/秒,很稳定。//准程序员 出问题了??关于ado的问题 ado和BDE系列控件比较 请问在DELPHI4中如何实现DBGRID的列冻结功能?
呵呵,你如果把画图的函数写在onpaint事件中的话,就可以
也就是相当于调用了invalidate
if Assigned(MyImg) then
ShowMessage(MyImg.Name);
var sName:string;//对象名
if (sender is TImage) then
begin
sName:=(sender as TImage).Name
end;
但你让系统重画不擦除你,可以用截获WM_ERASEBKGND系统消息,
但这样会带来一大堆画图的事件,因为应该程序的界面都要你自己处理了,
还有一种方法,就是你把你乱画的东西通过一定的方法保存起来,
重画的时候画上去