我现在来总结楼上两位说的吧:
说白了 OnClick 是一个指针 它可以指向你所为它指定的 过程; 你需要在动态创建Label 的时候将创建出来的Label 的Onclick 事件分配给 一个TNotifyEvent格式 事件. 如
procedure Form1.LabelsClicked(Sender: TObject);
begin
end;
注意它的参数: Sender
其实它是一个指针。 而Sender 此时事实上就是 这个指向你单击的Label 的地址。但是它的类型却是TObject(对象类) 所以,你要手动的将其强制转换为 TLabel类。
这样,你才可以使用TLabel 的方法。
那么你 就按照一楼的办法 将创建的每一个Label 的Onclick 事件都指定给一个函数。比如说: LabelsClicked,那么 接下来。你只需要确定 你点的是那个Label你的办法好像是用Component的Index.那么我可以根据你提供的资料,写出以下代码:
procedure Form1.LabelsClicked(Sender: TObject);
var
i: Integer;
begin
for i := 0 to ComponentCount - 1 do begin
if Components[i] = (Sender As TComponent) //注意这里要将 Sender 转换为TComponent 类型 才可以比较
then begin
//当前点击的Label 的Index 为i 执行你需要的代码
Break;
end;
end;
end;