[Lazarus] Doing work in FormActivate
Doug Chamberlin
dougchamberlin at earthlink.net
Tue Jan 13 17:23:49 CET 2009
Gabor Boros wrote:
> Every time when the form activated the
> OnActivate event triggered, after switched to another app and switched
> back etc. I try to eliminate this by write if Active then Exit; to the
> OnActivate but in this case things after the if Activate... line never
> triggered.
For Windows the OnActivate event should fire every time the window is
re-activated as you describe. This is as designed. If you want to
process something only once when the window is first activated try the
OnShow event.
If you must run some code only once but still within the OnActivate
handler, the best way I have found is to add a field to the TForm that
indicates the OnActivate has been run once. I usually use FActivated:
Boolean for this. Then in the OnActivate handler put:
if not FActivated then begin
//Do some work here that should only happen once
FActivated := True;
end;
More information about the Lazarus
mailing list