다시 질문드려요.
(1) 현재시간과 설정된시간(Edit2)이 같으면 동작정지상태로 가구 이 상태로
계속 유지할수 있는 방법좀 알려주세요.
시간이 계속 흐르니까 현재시간 = 설정된시간 바로 이 순간만 동작정
지상태이고 바로 해제가 되는데 이 순간을 그대로 유지할수 있는 방법좀
알려주세요.
>procedure TForm1.Timer2Timer(Sender: TObject);
>var
> CurrTime, SpecTime1: string;
>begin
> CurrTime := FormatDateTime('HHMM', Now);
> SpecTime1 := Edit1.Text;
>
> if StrToInt(CurrTime) > StrToInt(SpecTime1) then
> begin
> Showmessage('동작중입니다.');
> end
>end;
>
>procedure TForm1.Timer1Timer(Sender: TObject);
>var
> CurrTime, SpecTime: string;
>begin
> CurrTime := FormatDateTime('HHMM', Now);
> SpecTime := Edit2.Text;
>
> if CurrTime = SpecTime then
> ShowMessage('동작정지상태입니다.')
>end;
>
아래 님께서 질문하신 글을 다시 읽어봤는데
현재시간과 A의 예약시간과 같으면 C 일을 시작하고
현재시간과 B의 예약시간과 같으면 C일을 종료하는것 같은데요..
C의 일이 매 초, 매 분, 매 시간등 일정한 내용을 처리하는 거라면 Timer 이벤트의 기술하는게 맞지만,
C의 일을 단지 처음 시작과 끝이라면 Timer는 C의 일을 시작 및 종료시점만 일러주면 됩니다. 즉 1개의 Timer만 있으면 된다는거죠..
-------------------------------------------------
방금 나름대로 구현해 본건데 도움이 되셧음 하네요~
시간이 같은걸 비교보다 같거나 큰걸 비교하는것은 어떤 프로세스를 하다가
놓쳐버리는걸 방지하기 위해서입니다.
그럼..
Interface
Uses
..................
type
TTimerState = ( tState, tExecute, tStop );
var
StartState : TTimerState;
procedure TForm_SD05140.FormShow(Sender: TObject);
begin
StartState := tState;
Timer1.Enabled := True;
end;
procedure TForm_SD05140.Timer1Timer(Sender: TObject);
begin
if ( StartState = tState ) and
( FormatDateTime( 'HHMM', now ) >= Edit1.Text ) then
begin //================================= C일 시작
StartState = tExecute;
procedure C 시작일~~~~~
end;
if ( StartState = tExecute ) and
( FormatDateTime( 'HHMM', now ) >= Edit2.Text ) then
begin //================================= C일 종료
EndState = tStop;
procedure C 종료일~~~~~
end;
end;
procedure ---------------------C 시작----------------
begin
Memo1.lines.add( '일하는중 -_-' );
end;
procedure ---------------------C 종료 ----------------
begin
StartState = tState;
end;