[Lazarus] TTimer on design time

Vincent Snijders vincent.snijders at gmail.com
Tue Apr 19 20:39:16 CEST 2011


2011/4/19 fluisgirardi at gmail.com <fluisgirardi at gmail.com>:
> I'm doing some some controls that uses TTimer. I don't know why, but from
> some time ago, TTimer don't fire the OnTimer procedure. I see in their
> source and is wrote:
>
> 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;
> So, what's the problem of fire OnTimer on Design time? Maybe I'm wrong, but
> at least version 0.9.29 fires this event at design time.

I am not sure, but
Assigned (FOnTimer) returns always false at design time. But this is
from before 0.9.28, with the removal of JitForms, see
http://wiki.lazarus.freepascal.org/Lazarus_0.9.28_release_notes#IDE_changes

See also the code change in TCustomTimer.SetOnTimer.

Vincent




More information about the Lazarus mailing list