如何选中图片并删除?(30分)

  • 主题发起人 主题发起人 blueearth
  • 开始时间 开始时间
B

blueearth

Unregistered / Unconfirmed
GUEST, unregistred user!
Image := TImage.Create;
ImageListAct.Draw(image.Canvas,0,0,1);
这样创建并显示的图片如何选中并删除?
分数不多了,只能意思意思了,往哪位大侠指教!
 
iamge1.picture:=nil;
 
那如何选中图片呢?
因为我创建了好多张用Image := TImage.Create;
 
var
SelImage: TImage;

procedure TForm1.ImageClick(Sender: TObject); //所有Image的Click事件
begin
if Sender is TImage then //当前鼠标选中的图片
SelImage:=TImage(Sender);
end;
 
pihome,
这样选了以后我还写了另外一个DEL动作
SelImage.Picture.free;
怎么没法删除阿?
还有我在选中的图片中怎么体现它已经被选中?
 
如果你要删除这个Image
SelImage.Free
要显示选中状态
需要你自已画上去了
比如说选中状态
with SelImage do
Canvas.DrawFocusRect(ClientRect);
再画一次就是恢复原状态
 
pihome,
非常感谢你的回答!我分都给你了!
你还能帮我解决个这两个问题吗?
1.如何在我上面用Image := TImage.Create;这样创建的两张图片边缘间用直线连起来?
我可以获得鼠标DOWN在图片上的坐标,当我离开这张图片到另外一张图片UP的时候好像没法
获得这个UP的坐标?我也没法区分这样两张图片!
2.如何使这条直线随着IMAGE的移动而移动?
不知道我说清楚了没有!

 
>> 两张图片边缘间用直线连起来
可以直接在Form的Canvas画上去,在Image移动时重画
实际上写在Form的OnPaint里就行了
>>当我离开这张图片到另外一张图片UP的时候好像没法获得这个UP的坐标?
可然可以获取坐标,这个X,Y是相应Image左上角为(0,0)计算的,所以如果你Up的时候不在
Image上,获得的X,Y就不在Image的Width,Height范围内了
 
pihome,你好我再请教你一个问题
譬如我创建了两张图片,我在第一张图片上CLICK的时候Canvas.DrawFocusRect(ClientRect)
我现在点击第二张,我如何消除第一张的Canvas.DrawFocusRect(ClientRect);?
感谢!
我还发布了一个如何选中直线并删除的问题,有兴趣看看?我把分数给你!
 
var
SelImage: TImage;

procedure TForm1.ImageClick(Sender: TObject); //所有Image的Click事件
begin
if not (Sender is TImage) then //当前鼠标选中的是否是图片
Exit;

if Assigned(SelImage) then //如果上次已经选中了图片
with SelImage do
Canvas.DrawFocusRect(ClientRect); //重画一次以取消选中状态
//另外注意一点如果你删除了当前选中的图片,删除后需将SelImage置Nil

SelImage:=TImage(Sender);
with SelImage do
Canvas.DrawFocusRect(ClientRect); //选中状态
end;
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
后退
顶部