如何在delphi 7中设置一个过程(函数)到一个事件?



我正在写哪个组件将像['form1]那样通过数组运行。Button1中"、"form1。Memo1 ', 'form1'] - like然后把showms2处理程序放在上面(form1。button1。)Onclick: = showms2)

var
comp: array of Tcomponent;
met: Tmethod;
start off
setlength (comp, Lines.Count);
for i: = 0 to Lines.Count-1 do
start off
comp [i]: = (FindComponent (Lines.Names [i]) as TControl);
met: = GetMethodProp (comp [i], 'OnClick');
meth.Code: = form1.MethodAddress ('showms2');
met.Data: = 0;
// When splitting into elements, nothing happens, is there an alternative?

FindComponent()不按您使用它的方式工作。你只需要指定被搜索的组件直接拥有的组件的名称,你不能指定一个组件链,即Form1.FindComponent('Form1.Button1')将不工作,但Form1.FindComponent('Button1')将工作,如果Form1拥有Button1

同样,如果你要设置TMethod.CodeTMethod.Data,那么调用GetMethodProp()是完全多余的,应该被删除。

另外,您需要使用SetMethodProp()来实际地将TMethod分配给目标事件。

试试这个:

var
comp: TComponent;
met: TMethod;
i: Integer;
begin
for i := 0 to Lines.Count-1 do
begin
comp := FindComponent(Lines.Names[i]);
if comp <> nil then
begin
if IsPublishedProp(comp, 'OnClick') then
begin
meth.Code := Form1.MethodAddress('showms2');
meth.Data := Form1;
SetMethodProp(comp, 'OnClick', met);
end;
end;
end;
end;

相关内容

  • 没有找到相关文章

最新更新