gpt4 book ai didi

delphi - 让这变得更容易

转载 作者:行者123 更新时间:2023-12-03 05:46:22 24 4
gpt4 key购买 nike

如何在 Delphi 中简化此操作?

Procedure colori1
Begin

if Temperatura<=15 then
begin
Form1.Label1.Font.Color:=clBlue;
Form1.Label2.Font.Color:=clBlue;
Form1.Label3.Font.Color:=clBlue;
Form1.Label4.Font.Color:=clBlue;
Form1.Label5.Font.Color:=clBlue;
end;

if (Temperatura>=16) and (Temperatura<=18) then
begin
Form1.Label1.Font.Color:=clAqua;
Form1.Label2.Font.Color:=clAqua;
Form1.Label3.Font.Color:=clAqua;
Form1.Label4.Font.Color:=clAqua;
Form1.Label5.Font.Color:=clAqua;
end;

if (Temperatura>=19) and (Temperatura<=22) then
begin
Form1.Label1.Font.Color:=clLime;
Form1.Label2.Font.Color:=clLime;
Form1.Label3.Font.Color:=clLime;
Form1.Label4.Font.Color:=clLime;
Form1.Label5.Font.Color:=clLime;
end;

if (Temperatura>=23) and (Temperatura<=26) then
begin
Form1.Label1.Font.Color:=clYellow;
Form1.Label2.Font.Color:=clYellow;
Form1.Label3.Font.Color:=clYellow;
Form1.Label4.Font.Color:=clYellow;
Form1.Label5.Font.Color:=clYellow;
end;

if (Temperatura>=27) and (Temperatura<=29) then
begin
Form1.Label1.Font.Color:=$000080FF;
Form1.Label2.Font.Color:=$000080FF;
Form1.Label3.Font.Color:=$000080FF;
Form1.Label4.Font.Color:=$000080FF;
Form1.Label5.Font.Color:=$000080FF;
end;

if Temperatura>=30 then
begin
Form1.Label1.Font.Color:=clRed;
Form1.Label2.Font.Color:=clRed;
Form1.Label3.Font.Color:=clRed;
Form1.Label4.Font.Color:=clRed;
Form1.Label5.Font.Color:=clRed;
end;
end;

如果我像这样使用“for循环”:

For i:=0 to n do label[i].font.color:=clRed

我显然会得到一个错误,因为Delphi不知道什么label[i]方法。有什么建议吗?

最佳答案

声明一个局部变量来保存颜色:

var
Color: TColor;

然后决定颜色应该是什么:

if Temperatura <= 15 then
Color := clBlue
else if Temperatura <= 18 then
Color := clAqua;
else ...

然后为控件指定颜色:

Form1.Label1.Font.Color := Color;
Form1.Label2.Font.Color := Color;
....

标签可以存储在数组或列表中。这样您就可以迭代它们来分配颜色。您可以在表单类中像这样声明数组:

FLabels: TArray<TLabel>;

在构造函数中像这样分配它:

FLabels := TArray<TLabel>.Create(Label1, Label2, Label3, Label4, Label5);

要迭代它设置颜色,请执行以下操作:

var
lbl: Tlabel;
....
for lbl in FLabels do
lbl.Font.Color := Color;

您似乎正在使用全局变量Form1。如果没有该全局变量,并且将此过程(以及其他类似的过程)转换为以下形式的方法,您的代码将会更好。

关于delphi - 让这变得更容易,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21269295/

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