Q&A

  • 타이머 콤퍼넌트 사용시 타이틀바를 누르면 시간이 멈춰요?
타이머 콤퍼넌트를 사용했습니다.



10초 이내에 버튼을 누르지 않으면 자동으로 차례가 넘어가는

보드게임을 제작하다가 발견했는데요,



시간이 잘 가다가 타이틀바(프로그램 제목줄 가운데 부분)를

마우스로 꼭 누르고 있으면 시간이 멈추네요 ㅠ.ㅠ

이래서야 시간제한이 의미가 없어집니다.



아래 프로그램 참조하세요. 어떻게 해야 시간이 안멈추고 갈까요?



미리 답변 감사드립니다.





unit Unit1;



interface



uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

ExtCtrls, StdCtrls;



type

TForm1 = class(TForm)

Label1: TLabel;

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;



var

Form1: TForm1;

i : Integer;



implementation



{$R *.DFM}



procedure TForm1.Timer1Timer(Sender: TObject); // Interval = 1000ms

begin

inc(i);

Label1.Caption:=inttostr(i);

end;



end.





2  COMMENTS
  • Profile
    쭉쭉빵빵 2001.03.23 08:36
    타이틀바를 눌렸을때는 모든 이벤트 및 메시지가 정지됩니다.



    저도 그와같은 문제에 봉착되었거든요.



    제경우에는 시리얼포트에 들어오는 Data처리인데 누르고 10여초 있으면



    설정해논 Readbuffer를 초과해서 공포의 파란화면이 나와요.



    프로그램의 프라이어티를 아무리 크리티컬로하고 스레드도 크리티컬로 해도



    마찬가지 입니다.



    저도 잘 모르지만 Timer문제는 DelphiX의 DirectTimer를 한번 써 보심이..



    잘된다는 보장은 못하겠지만...



  • Profile
    초보맨 2001.03.23 12:09
    쭉쭉빵빵 wrote:

    > 타이틀바를 눌렸을때는 모든 이벤트 및 메시지가 정지됩니다.

    >

    > 저도 그와같은 문제에 봉착되었거든요.

    >

    > 제경우에는 시리얼포트에 들어오는 Data처리인데 누르고 10여초 있으면

    >

    > 설정해논 Readbuffer를 초과해서 공포의 파란화면이 나와요.

    >

    > 프로그램의 프라이어티를 아무리 크리티컬로하고 스레드도 크리티컬로 해도

    >

    > 마찬가지 입니다.

    >

    > 저도 잘 모르지만 Timer문제는 DelphiX의 DirectTimer를 한번 써 보심이..

    >

    > 잘된다는 보장은 못하겠지만...

    >



    그냥 기나가던 헐렁한 초보인데요.

    DelphiX의 DirectTimer를 사용하더라도 DirectTimer가 속한 폼이 포커스를 잃으면 타이머 작동이 멈춤니다. 물론 다시 포커스를 주면 다시 중단된 시점부터 잘 작동합니다.

    하지만 DelphiX의 DirectTimer는 다이렉트X를 사용하기땝시 DirectTimer를 하나만 사용해도 시퓨사용도 100%가 됩니다. 하지만 Timer의 작동은 기존 델파이의 Timer보다는 칼입니다.