2010-02-16 3 views
2

현재 Delphi에서 스코어 보드를 조각하는 데 문제가 있습니다.델파이의 라벨에 정수 값을 더하는 방법

개인적인 질문 인 일련의 양식이 있습니다. 질문에 올바르게 대답하면 점수는 1입니다. 그렇지 않으면 점수는 -1입니다.

지금 내 점수 판에는 12 개의 레이블이 있으며 그 중 11 개에는 각 양식의 점수가 들어 있습니다. 내가하고 싶은 것은 각 레이블에 숫자를 더하고 최종 점수를 12 번째 레이블에 출력하는 것입니다.

이 방법이 있습니까? 도움이 될 것입니다.

+3

당신이 질문 당 하나의 양식을 만들 필요가 대신 그냥 일반적인에 대한 질문까지로드 이유를 궁금해 어떤 질문과 일련의 대답을 담을 수있는 양식. Clippy 귀찮은 클립 보드가 갑자기 나타나서 "퀴즈 프로그램을 작성하는 것처럼 들리네."라고 말합니다. :-) –

답변

3
  1. 깔끔한 해결책은 :

    SumLabel.Caption : = 된 IntToStr (StrToIntDef (Label1.Caption, 0) + StrToIntDef (Label2.Caption 정수 필드에

  2. 그리 깔끔한 솔루션을 정수로 점수를 유지 , 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; 
+0

TList에 레이블을 추가하지 말고 왜 반복되는 "레이블 .Caption : = IntToStr (점수 [x]) ". –

+1

그런 경우 TComponentList가 더 좋을 것입니다. –

2

DR의 대답은 장소입니다 @ 생각하지만 -on, @ Ritsaert 's가 도움이된다. 여기에 또 다른 옵션이있다.

레이블 구성 요소에는 '태그'속성이 있습니다.이 태그는 고유 한 용도로 사용할 수 있으며, 경우에 따라 캡션을 설정하는 것과 동시에 태그 속성을 설정하기 만하면됩니다.

캡션에 간단한 숫자 (원하는 경우) 이상을 포함하도록 서식을 지정할 수 있으며 이미 정수이고 (사용자가 필요하지 않은) 태그를 요약하는 것입니다. StrToIntDef 호출 뒤의 추가 작업). 실제로 GUI에서 값을 유지하는 것에 대한 @ DR의 관점을 따르면서 각 레이블에 저장 영역을 대신 사용하고 있습니다.

;

점수를 설정하는 단계 -

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

하고이를 합산 -

FSum:=Label1.Tag + Label2.Tag + Label3.Tag (etc) 
관련 문제