动态生成控件???(100分)

  • 主题发起人 delphi_help
  • 开始时间
D

delphi_help

Unregistered / Unconfirmed
GUEST, unregistred user!
本人正在编写图象管理程序,遇到了麻烦:
1、图象的显示个数是不定的,我想在窗体上放个ScrollBox1控件,然后在
ScrollBox1上动态创建Image控件,而且当鼠标点击image控件将图象放大;
2、如何动态创建Image控件,如何加它的鼠标事件?
3、要求image控件的大小固定,当导入的图片大于控件的大小,能缩放到控件大小?
 
1这是一个位置的问题,如果图片一样大的话,不用我说了吧
2 image1:timage
image1:=timage.create;
image1.onclick:=abc;()
procedure abc((Sender: TObject);
begin
xxxx
end;
3 image1.stretch:=true
 
主意要加上
image1.parent:=scrollbox
image1.width:=
image1.height:=
image1.left;=
image1.top:=
 
顺便问个问题:
如何清除ScrollBox1控件上原有的Image?
 
动态生成时可能还要加上image.visible:=true;

for I:=0 to ScrollBox1.ControlCount-1 do
if ScrollBox1.Controls is TImage then
ScrollBox1.Controls.RemoveComponent;
 
>>3、要求image控件的大小固定,当导入的图片大于控件的大小,能缩放到控件大小?
如何将大于Image控件的图片按原来的长宽比例自动缩小或放大?

 
我给动态创建的Image控件指定一个单击事件:
Image.onclick:=imageclick;

procedure TMainForm.imageclick(Sender:TObject);
begin
//
end;
我如何知道当前点击的是哪个Image控件?这样才能对对它操作。

 
请各位富翁帮忙,先谢了。
 
在事件里不是有个Sender参数吗,用这个参数就知道是那一个了。很简单的。
我刚做了一个和你类似的程序,可惜公司不宽带,要不然就发给你。
 
你最好是自己作个控件,封起来,别用Image,如果数量多了的话系统资源就不够用了,
我曾经模仿联众作了一个游戏室,也是,ScrollBox上用了许多Image,画桌子呀,玩家呀,
后来发现桌子多了就不行了,没办法只好自己draw这些Image了
 
TO pjprobbi:
孰我愚昧,怎么通过Sender参数确定是第几个Image控件?能写几行代码看看吗?
 
多人接受答案了。
 
顶部