Witam.
mam Komponent A ktory po wykonaniu zadania wysyla komunikat do komponentu B.
Nastepnie komponent B czeka chwile (ok 1s) i wykonuje jakies zadania.
Czekanie jest zrobione za pomoca TTimer, co nie bardzo mi pasuje.
Czy w Windowsie jest mozliwosc wyslania komunikatu z opoznieniem?
(tzn zeby odbiorca dostal go juz po tej 1s i zebym nie musial robic oczekiwania?)
Aktualnie jest tak(z pewnymi uproszczeniami):
procedure TA.dzialaj;
begin
{...}
PostMessage(TB.handle,WM_Command,0,0); <---- ten komunikat wywoluje
end;
procedure TB.OdbierzKomunikat(var Msg: TMessage); <----ta procedure natychmiast
var Timer: TTimer;
procedure Reaguj; <---- ta procedura wywoluje sie w obsludze timera po odczekaniu 1s
begin
//jakies dzialania
timer.enabled := false; // to jest zle napisane
timer.free; // ale nie o to chodzi :P
end;
begin
if Msg.Msg = WM_NEXT then begin
Timer := TTimer.create(nil);
Timer.interval := 1000;
Timer.OnTimer := Reaguj;
Timer.enabled := true;
end;
end;
A chcialbym zeby bylo jakos tak:
procedure TA.dzialaj;
begin
{...}
PostMessage(TB.handle,WM_Command,0,0); <----------- chcialbym zeby ten komunikat wywolal...
end;
procedure TB.OdbierzKomunikat(var Msg: TMessage); <-------- ta procedure z 1s opoznieniem
begin
if Msg.Msg = WM_NEXT then begin
//jakies dzialania
end;
end;