2014-03-02 2 views

답변

2
  • 타이머의 간격 속성을 5000으로 설정하십시오. 그것은 밀리 초 단위의 간격입니다.
  • 형식의 개인 필드 인 FCount을 선언하십시오.
  • 타이머에 OnTimer 이벤트 핸들러에 첨부 :

     

    • 당신은 타이머를 시작 FCount을 초기화하고 TrueTimer1.Enabled을 설정할

     

    procedure TForm1.Timer1Timer(Sender: TObject); 
    begin 
        inc(FCount); 
        lbl.Caption := IntToStr(FCount); 
    end; 
    
    . 타이머를 중지하려면 Timer1.EnabledFalse으로 설정하십시오.

지금 삭제 된 이전 질문을 바탕으로 카운터가 계속 똑딱 거리고 있다고 가정합니다.

타이머는 틱 할 때마다 OnTimer 이벤트를 호출하여 작동합니다. 각 틱은 이벤트 핸들러에 대한 별개의 호출이기 때문에 로컬 변수가 아닌 다른 모든 영구 상태를 저장해야합니다. 로컬 변수는 소유 메소드의 지속 기간 동안 만 지속되기 때문입니다. 따라서 양식의 개인 필드를 사용하여 개수를 유지합니다.

타이머가 이 아니므로 프로그램이이됩니다. 타이머는 비동기식입니다. 타이머가 활성화되어있는 동안 프로그램은 사용자 입력에 응답합니다. 타이머가 만료되면 시스템은 메시지 대기열에 타이머 메시지를 합성합니다. 프로그램이 타이머를 차단하지 않습니다. 따라서 UI 요소는 그렇지 않으면 조치를 취하지 않는 한 계속 활성화되고 응답됩니다.

+0

내가 실제로하려는 것은 무한 루프를 만드는 것입니다. 하지만 루프가 매번 실행되기를 원합니다 ... 10 분 ... '새로 고침'을 실행하면 스크립트가 실행되고 10 분 동안 아무것도 수행하지 않고 스크립트를 다시 실행해야합니다. – GerhardAA

+0

글쎄, 타이머를 사용 중지하지 마십시오. 그러나 마지막 단락을 한 번 더 읽으십시오. 아마도 타이머는 당신이 필요로하는 것이 아닙니다. 그러나 타이머를 언급 한 것은 당신이었습니다. 10 분 동안 아무 것도하지 않으려한다면 GUI 프로그램이 잘못된 것처럼 보입니다. 또는 적절한 시간 초과가있는 취소 이벤트에서 WaitForSingleObject가있는 스레드 기반 타이머가 필요할 수도 있습니다. 아주 말하기 힘듭니다. 타이머에 대해 알아야 할 것이 무엇인지 물어 봤습니다. 왜냐하면 그것이 당신이 요구 한 것이기 때문입니다. –

+0

타이머가 아닌 다른 것을 사용 하시겠습니까? (약간의 주제) – GerhardAA