如何在delphi中的标签中添加整数值

时间:2010-02-16 11:08:28

标签: delphi

我目前在使用Delphi中的记分板时遇到问题。

我有一系列形式是个别问题。 如果问题得到正确回答,则得分为1.否则得分为-1。

目前在我的记分牌上,我有12个标签,其中11个包含每个表格的分数。 我想要做的是在每个标签中加上数字,并将最终得分输出到第12个标签。

有没有办法做到这一点? 任何帮助将不胜感激。

3 个答案:

答案 0 :(得分:11)

您应该仅使用UI来显示您的值。

对于使用您的数据的工作,您应该使用适当的数据结构:数组,列表等。

使用数组的示例:

var
  Scores[0..10]: Integer;
  Sum: Integer;

procedure CollectData;
var
  i: Integer;
begin
   Scores[0] := ...;
   //...
   Scores[10] := ...;

   Sum := 0;
   for i := Low(Scores) to High(Scores) do
     Sum := Sum + Scores[i];
end;

procedure DisplayData;
begin
  Label1.Caption := IntToStr(Scores[0]);
  //...
  Label11.Caption := IntToStr(Scores[10]);
  Label12.Caption := IntToStr(Sum);
end;

答案 1 :(得分:3)

  1. 整洁的解决方案:在整数字段中将分数保持为整数
  2. 不是那么整洁的解决方案:

    SumLabel.Caption:= IntToStr(StrToIntDef(Label1.Caption,0)+ StrToIntDef(Label2.Caption,0)+ ...);

答案 2 :(得分:2)

虽然我认为@ DR的回答是正确的,而且@ Ritsaert是有帮助的,但这是另一种选择。

您的标签组件将具有“TAG”属性 - 您可以将其用于您自己的目的,在您的情况下,我只需在设置标题的同时设置TAG属性。

这背后的优势在于你可以将标题格式化为包含多个简单数字(如果你愿意),而且你只是总结标签(已经是整数而不需要你做额外的在StrToIntDef调用后工作)。实际上,您正在关注@ DR关于将值保留在GUI之外的观点(在某种意义上),您在每个标签中使用存储字段。

例如

设置分数时

; -

Label1.Caption:=Format('%d point',[FScore]);
Label1.Tag:=FScore;

并在总结时; -

FSum:=Label1.Tag + Label2.Tag + Label3.Tag (etc)