您好,我这里做一个软件,鼠标点到FORM上,自动创建一个IMAGE,记录下X,Y坐标,然后在点到其它地方,上次创建的IMAGE要销毁,然后再记录新控件的X,Y坐标,不知道如何实现,谢谢您告诉我。 假如FORM上CREATE了多个TIMAGE,如何通过命令来销毁他们,还有就是如果知道多个坐标,又如何依次的CREATE这些IMAGE呢。
解决方案 »
- 请教一个试用软件实现的问题
- 请帮忙解决
- 我用dbExpress连接Interbase数据库,打包时应将哪些文件或动态库打进去!(在线等)
- 查询到的数据不能修改?
- ado连接access的密码问题
- 请问那里有游戏平台的服务器端下载???
- 不难,但我不会啊
- 请问谁知道 换肤控件SkinEngine Version 3.4.5在那里有下载?
- 如何取得文件夹的属性以及某文件的属性?
- 谁会用delphi写解压程序(zip文件)?
- 网络上更改另一台没显示器电脑的IP地址等设置并进行数据通讯
- 在TDBGrid控件中,该控件和一个TADOQuery绑定在一起.现在要在TDBGrid控件中增加新记录,新记录的某些字段不需人工输入,而是利用已经输入的
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;
只是还要取鼠标所在位置的坐标
var
winPos:TPoint;
begin
GetCursorPos(winpos); //得到当前鼠标指针的在屏幕上的坐标
------------------------------------
心中多少的创伤,不可抵挡的空虚,卑躬屈膝的一生,今天只想冲出那枷锁,就要象狂人,金属者---金属狂人
//假设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;
大家看看问题在哪?
理论上应该是(p.X+image.Width/2)或者(p.Y+image.Height/2)
得出来的坐标结果不准确
或者应该是(p.X-image.Width/2)或者(p.Y-image.Height/2)