关于Delphi中动态数组的问题

来源:百度知道 编辑:UC知道 时间:2024/05/16 13:46:26
各位大虾,本菜鸟最近编程时遇到一个问题,希望各位不吝赐教!
我用Delphi编一个程序,程序中用var imgarray:array[1..10] of TImage来动态创建一系列Image控件,让用户在程序运行时根据需要动态创建
问题是:
现在用户已经创建了一些控件,比如3个,那么用户在选择它们中的一个时,我如何知道用户选择了哪一个?
因为我无法在程序设计时添加这些动态控件的代码,所以我无法运用click事件来得知哪个被选中.我查了好多书,上面也没有说Delphi的控件有类似getfocus的触发事件.请各位大师不吝赐教!谢谢!
dotdot2000,对于您的算法我还是有些疑惑.这里Tag属性起到了一个什么样的作用?如果想借助image0click过程来判断单击了哪个控件,tag属性似乎是无法被传递到image0click中的,并且似乎没有什么属性能够被传递进去.这样虽然已经可以将所有的单击事件归到一个过程中去,但还是无法判断究竟单击了什么控件啊.非常感谢您的回答,由于本人水平有限,请麻烦您再做些补充!

从TComponent下来的组件都有一个属性:Tag,可以利用这个属性满足你的要求,可以用类似这样的代码:
var
Form1: TForm1;

ImageBuffer: Array[0..2] of TImage;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
ImageBuffer[0] := TImage.Create(SELF);
ImageBuffer[0].Tag := 0;
...
ImageBuffer[0].OnClick := Image0Click;

ImageBuffer[1] := TImage.Create(SELF);
...
end;

procedure TForm1.Image0Click(Sender: TObject);
begin
ShowMessage('Image0 Clicked!');
end;

Delphi语法还是很活的,只有想不到的,没有做不到的

我在学习DELPHI的时候也遇到过这个问题,比如你可以用二维数组,第二个值放0或1,用以校验该数组的第一个值中是否有数据(图像)。呵呵,取巧了,具体的IMAGE属性记不清了。

我也遇到同样的问题,也是没办法.去大富翁里面去问吧.那里比较专业.
http://www.delphibbs.com/高手挺多.相信可以帮助你的.

把同一事件处理函数赋值给Onclick事件,通过Object:Sender来判断那个对象送来的消息