gpt4 book ai didi

delphi - FindComponent 在过程中不起作用

转载 作者:行者123 更新时间:2023-12-03 15:48:20 24 4
gpt4 key购买 nike

我正在开发一个程序,用于计算不同TStringGrid中某些数据的平均值,我想使用一个过程。它被称为calcola

procedure calcola(numero:ShortInt; StringGrid:TStringGrid; pbarprog:ShortInt);
var i,j,cont,num:shortint;
avg,temp,numfl:double;
a:string;
Edit1:TEdit;
begin
if StringGrid.Colcount>1 then

//other code

avg:=temp/cont;
TLabel(FindComponent('Label'+IntToStr(num))).Caption:=FloatToStrF(avg, ffGeneral, 1, 1);
Edit1.Text:=FloatToStr(StrToFloat(TLabel(FindComponent('Label'+IntToStr(num))).Caption)*10);
TProgressBar(FindComponent('ProgressBar'+IntToStr(i+pbarprog))).Position:=StrToInt(Edit1.Text);

//other code

end;
end;
end;

在此过程中,Lazarus 告诉我“未找到 FindComponent 标识符”。然后我在 procedure TForm1.Button1Click(Sender: TObject); 中剪切/粘贴相同的代码,并且没有错误。

我需要在 calcola 中使用 FindComponent(),我该怎么做?

最佳答案

Then I cut/pasted the same code in procedure TForm1.Button1Click(Sender: TObject); and I had no errors.

当您进行更改时,编译器停止提示的原因是,当将 calcola 声明为 TForm1 的方法时,编译器可以通过向后搜索 TForm1 的声明方法及其对象的公共(public)方法来解析标识符 FindComponent。从 (TForm ... TObject) 下降,直到找到用该名称声明的一个。 FindComponent 在 TComponent 中声明。

编译器提示您的原始版本的原因是 calcola 在您的程序的全局范围中被声明为独立例程(我假设),对于这些,编译器仅搜索先前声明的独立过程/函数,不是声明为对象方法的方法。

如果出于某种原因,您的 calcola 过程绝对必须是一个独立的过程,那么最好的办法就是调整其参数,以便您可以将 TForm1 的特定实例作为参数传递给它,就像您使用字符串网格。

关于delphi - FindComponent 在过程中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18161392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com