delphi函数与Tcolor返回

时间:2013-04-13 20:04:09

标签: delphi function if-statement

只是一个快速的,忙于任务...... 有人可以检查我的逻辑是否正确,因为它似乎不起作用,编译时没有任何错误

我这样称呼函数:

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;

2 个答案:

答案 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