创建与销毁控件的一点问题,请指点一下。

jerehsofter 2005-01-14 10:37:36
您好,我这里做一个软件,鼠标点到FORM上,自动创建一个IMAGE,记录下X,Y坐标,然后在点到其它地方,上次创建的IMAGE要销毁,然后再记录新控件的X,Y坐标,不知道如何实现,谢谢您告诉我。 假如FORM上CREATE了多个TIMAGE,如何通过命令来销毁他们,还有就是如果知道多个坐标,又如何依次的CREATE这些IMAGE呢。
...全文
123 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
hsmserver 2005-01-15
  • 打赏
  • 举报
回复
var
i:integer;
image1:Timage;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TImage then
TImage(Components[i]).Free;
end;
image1:=TImage.Create(self);
image1.Top:=100;//坐标
image1.Left:=100;//坐标
image1.Height:=100;
image1.Width:=100;
image1.Parent:=Form1;
image1.Canvas.TextOut(10,10,'ok');
end;
5207 2005-01-15
  • 打赏
  • 举报
回复
FreeAndNil(对象名)
terrytzq 2005-01-15
  • 打赏
  • 举报
回复
up!
cdj_58 2005-01-15
  • 打赏
  • 举报
回复
为什么不直接用p.y,p.x作为它的左上角的坐标?
或者应该是(p.X-image.Width/2)或者(p.Y-image.Height/2)
Kshape 2005-01-15
  • 打赏
  • 举报
回复
就是得到坐标点那里好象不准确
大家看看问题在哪?


理论上应该是(p.X+image.Width/2)或者(p.Y+image.Height/2)
得出来的坐标结果不准确
Kshape 2005-01-15
  • 打赏
  • 举报
回复
//以下代码调试通过,不过具体位置好象有点点不准确
//假设D:\1.bmp存在
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
i: integer;
P: TPoint;
image: TImage;
begin
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TImage then
TImage(Components[i]).Destroy;
end;
GetCursorPos(p);
image := TImage.Create(Form1);
image.Parent := Form1;
image.Top := p.Y-image.Height*2 ;
image.Left := p.X-image.Width*2 ;
image.Stretch := true;
image.Picture.LoadFromFile('D:\1.bmp');

end;
cdj_58 2005-01-15
  • 打赏
  • 举报
回复
image1.Destroy
jerehsofter 2005-01-15
  • 打赏
  • 举报
回复
大家都发表一下意见。帮帮在下。
jerehsofter 2005-01-15
  • 打赏
  • 举报
回复
to hsmserver(撒哈拉之雨的悲伤)

您的做法我刚才实验过了,控件没有销毁,是不是哪里有问题。
jerehsofter 2005-01-15
  • 打赏
  • 举报
回复

感谢楼上的各位,我回去试试看。
metal11516580 2005-01-15
  • 打赏
  • 举报
回复
hsmserver(撒哈拉之雨的悲伤) 的做法是可以的
只是还要取鼠标所在位置的坐标
var
winPos:TPoint;
begin
GetCursorPos(winpos); //得到当前鼠标指针的在屏幕上的坐标


------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人
才子鸣 2005-01-15
  • 打赏
  • 举报
回复
up
Kshape 2005-01-14
  • 打赏
  • 举报
回复
明天来给你答案!
sousouwjh 2005-01-14
  • 打赏
  • 举报
回复
如果知道多个坐标,又如何依次的CREATE这些IMAGE呢。

如果象你说的那样创建控件后再把座标付给他们!
sousouwjh 2005-01-14
  • 打赏
  • 举报
回复
为什么要销毁呢?你不是要移动该控件吗?移动就好了呀!控件里设两属性保存座标就好了呀!多个TIMAGE?不同的对象那里会有混肴呢?
作为Microsoft 32位平台的应用程序编程接口,Win32 API是从事Windows应用程序开发所必备的。本书首先对Win32 API函数做完整的概述;然后收录五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务;在附录部分,讲解如何在Visual Basic和Delphi中对其调用。 本书是从事Windows应用程序开发的软件工程师的必备参考手册。 Win32 API作为 Microsoft 32位平台(包括:Windows 9x,Windows NT3.1/4.0/5.0,WindowsCE)的应用程序编程接口,它是构筑所有32位Windows平台的基石,所有在Windows平台上运行的应用程序都可以调用这些函数。 从事Windows应用程序开发,离不开对Win32 API函数的调用。只有充分理解和利用API函数,才能深入到Windows的内部,充分挖掘系统提供的强大功能和灵活性。 近年来,随着Microsoft 32位平台的版本升级, Win32 API函数的构成、功能与调用方式都有很大的发展变化,然而,国内很少有相关的新版资料出版。为了满足广大开发人员的迫切需求,我们经过认真收集、整理素材,组织编写了这本与各种Microsoft 32位平台最新版本同步的Win32 API参考手册。 全书收录了五大类函数:窗口管理、图形设备接口、系统服务、国际特性以及网络服务。所有函数均附有功能说明、参数说明、返回值说明、备注以及引用说明。另外,在本书的第一章,我们对WiN32 API函数作了完整的概述;在附录部分,讲解了如何在Visual Basic和Delphi中对其调用。 由于篇幅较大,涉及技术内容广泛,加之时间仓促,书中难免存在不少错误或疏漏,希望广大读者给与批评指正。 在Windows程序设计领域处于发展初期时,Windows程序员可使用的编程工具唯有API函数。这些函数在程序员手中犹如"积木块"一样,可搭建出各种界面丰富、功能灵活的应用程序。不过,由于这些函数结构复杂,所以往往难以理解,而且容易误用。 随着软件技术的不断发展,在Windows平台上出现了很多优秀的可视化编程环境,程序员可以采用"所见即所得"的编程方式来开发具有精美用户界面和功能的应用程序。这些可视化编程环境操作简便、界面友好,比如:Visual C++,Delphi,Visual Basic等等。在这些工具中提供了大量的类库和各种控件,它们替代了API的神秘功能。事实上,这些类库和控件都是构筑在Windows API的基础上的,但它们使用方便,加速了Windows应用程序的开发,所以受到程序员的普遍采用。有了这些类库和控件,程序员们便可以把主要精力放在整体功能的设计上,而不必过于关注具体细节。不过,这也导致了非常多的程序员在类库面前"固步自封",对下层API函数的强大功能一无所知。 实际上。程序员要想开发出更灵活、更实用、更具效率的应用程序,必然要涉及到直接使用API函数。虽然类库和控件使应用程序的开发容易得多,但它们只提供Microsoft Windows的一般功能,对于一些比较复杂和特殊的功能来说,单使用类库和控件是难以实现的,必须直接使用API函数来编写。API函数是构筑整个Windows框架的基石,只有充分理解和利用API函数,才能深入到Windows的内部,充分发挥各种32位平台的强大功能和灵活性,才能成功地扩展和突破类库、控件和可视开发环境的限制。 Win32 API即为Microsoft 32位平台的应用程序编程接口(Application Programming Interface)。所有在Win32平台上运行的应用程序都可以调用这些函数。 使用Win32 API,应用程序可以充分挖掘Windows的32位操作系统的潜力。 Mircrosoft的所有32位平台都支持统一的API,包括函数、结构、消息、宏及接口。使用 Win32 API不但可以开发出在各种平台上都能成功运行的应用程序,而且也可以充分利用每个平台特有的功能和属性。 在具体编程时,程序实现方式的差异依赖于相应平台的底层功能的不同。最显著的差异是某些函数只能在更强大的平台上实现其功能。例如,安全函数只能在Windows NT操作系统下使用。另外一些主要差别就是系统限制,比如值的范围约束,或函数可管理的项目个数等等。 标准Win32 API函数可以分为以下几类: 窗口管理 窗口通用控制 Shell特性 图形设备接口 系统服务 国际特性 网络服务 在下面各节中,我们分别介绍这7种类型的API函数。 窗口管理函数向应用程序提供了一些创建和管理用户界面的方法。你可以使用窗口管理函数创建和使用窗口来显示输出、提示用户进行输入以及

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧