... urca ...
A case e in uffico ho una plettora di PC.
Vado da W2k a Win7. (Se mi metto di impegno, scommetto che un Win98 lo trovo ;) )
Ma non ho un Linux a portata di mano.
Eventualmente è da vedere come impostare il callback che imposto per Windows tramite i timer del SO.
Credo basti gestire la cosa come fa il TTimer (System nella paletta Lazarus) che viene caricata con l'installazione base.
(Ravanando sul codice , ho trovato le righe di codice da indagare ...
procedure TCustomTimer.UpdateTimer;
begin
KillTimer;
if (FEnabled) and (FInterval > 0)
and (([csDesigning,csLoading,csDestroying]*ComponentState=[]))
and Assigned (FOnTimer) then begin
//DebugLn(['TCustomTimer.UpdateTimer ',dbgsName(Self),' WidgetSet.CreateTimer']);
FTimerHandle := WidgetSet.CreateTimer(FInterval, @Timer);
if FTimerHandle=0 then begin
FTimerHandle:=cIdNoTimer;
raise EOutOfResources.Create(SNoTimers);
end;
if Assigned(OnStartTimer) then OnStartTimer(Self);
end;
end;
procedure TCustomTimer.KillTimer;
begin
if FTimerHandle <> cIdNoTimer then begin
//DebugLn(['TCustomTimer.KillTimer ',dbgsName(Self)]);
WidgetSet.DestroyTimer(FTimerHandle);
FTimerHandle := cIdNoTimer;
if Assigned(OnStopTimer) then OnStopTimer(Self);
end;
end;
)
FTimerHandle := WidgetSet.CreateTimer(FInterval, @Timer); <--------> FTimerHandle := SetTimer(self.Handle, 0, 500, nil);
WidgetSet.DestroyTimer(FTimerHandle); <------> KillTimer(self.handle, FTimerHandle);
Sono nell'impossibilità di verificare (carenza ferramenta sotto mano) se basta adattare il codice con questi cambiamenti.
Se fai la prova, poi posta il costruttore e il distruttore della classe ;)