delphi函数与Tcolor返回

Pea*_*nut -1 delphi if-statement function

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

我把这个函数称为:

lblcolor.color :=  colorChooser(intVariable);
Run Code Online (Sandbox Code Playgroud)

该功能必须使标签为绿色,红色,黄色或蓝色,如下面的代码所示,但它似乎不起作用.

或者你们认为我必须使用这个案例陈述.

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;
Run Code Online (Sandbox Code Playgroud)

Ken*_*ite 7

这里有一个主要的格式问题.:-)问题是标签默认采用其父颜色,并且也是透明的(意味着它的背景不可见).在设计时或在运行时的事件中,将标签的Transparent属性设置为FalseObject Inspector 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;
Run Code Online (Sandbox Code Playgroud)

测试它:

procedure TForm1.Button1Click(Sender: TObject);
begin
  lblColor.Color := ColorChooser(Random(8));
end;
Run Code Online (Sandbox Code Playgroud)

现在,写一个更清洁的方式:

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;
Run Code Online (Sandbox Code Playgroud)