只是一个快速的,忙于任务...... 有人可以检查我的逻辑是否正确,因为它似乎不起作用,编译时没有任何错误
我这样称呼函数:
lblcolor.color := colorChooser(intVariable);
该功能必须使标签为绿色,红色,黄色或蓝色,如下面的代码所示,但它似乎不起作用。
或者你们认为我必须使用一个案例陈述。
function ColorChooser(difference : integer): TColor;
begin
if difference = 0 then
begin
Result := clGreen;
end
else if (difference >= 1) and (difference <= 3) then
begin
Result := clYellow;
end
else if (difference >= 4)
and (difference <= 8) then
begin
Result := clRed;
end
else
Result := clBlue;
end;
答案 0 :(得分:7)
这里有一个主要的格式问题。 :-)问题是标签默认采用其父颜色,并且也是透明的(意味着它的背景不可见)。在设计时在Object Inspector中或在运行时的Transparent
事件中将标签的False
属性设置为FormShow
。
现在,让我们清理您的代码:
function ColorChooser(difference : integer): TColor;
begin
Result := clBlue;
if difference = 0 then
Result := clGreen
else if (difference >= 1) and (difference <= 3) then
Result := clYellow
else if (difference >= 4) and (difference <= 8) then
Result := clRed;
end;
测试它:
procedure TForm1.Button1Click(Sender: TObject);
begin
lblColor.Color := ColorChooser(Random(8));
end;
现在,写一个更清晰的方式:
function ColorChooser(difference : integer): TColor;
begin
case difference of
0: Result := clGreen;
1..3: Result := clYellow;
4..8: Result := clRed
else
Result := clBlue;
end;
end;
答案 1 :(得分:1)
您正在设置标签的背景颜色。控件总是透明的。没有任何反应。
改为设置lbl.Font.Color
。
至于你的功能,案例陈述更清晰:
case difference of
0:
Result := clGreen;
1..3:
Result := clYellow;
4..8:
Result := clRed;
else
Result := clBlue;
end;
如果您确实想要设置背景颜色,则必须将标签的Transparent
属性设置为False
。