- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
如何在 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/
我在 android 代码中使用 asmack XMPP。我可以正常登录 XMPP 服务器,但是当我尝试创建新用户时出现问题。我想要实现的是: 以管理员身份登录。 创建一个新用户。 从管理员注销。 以
这是我的标记页面,其中有一个按钮可以从数据库中搜索数据并显示在网格中 这是我背后的代码 if (!IsPostBack) { LblInfo.Text = "Page Load
当我多次将相同的 float 值插入到我的集合中时,本应花费恒定时间的 x in s 检查变得非常慢。为什么? 时序x in s的输出: 0.06 microseconds 0.09 mi
我有一个小型聊天客户端,可以将所有历史记录存储在 sqlite 数据库中。当用户单击我的应用程序中的 history 选项卡时,我的应用程序会获取所有相关历史记录并将其显示在 QWebView 中。我
我是一名优秀的程序员,十分优秀!