OnActivate is executed when the Form receives Focus - eg if FormA (A has focus) launches FormB (B gets focus) FormB then closes, FormA (A gets focus) will execute FormA.OnActivate.

Regards
Paul McKenzie
Wellington
New Zealand



John Bird wrote:

Those are the reasons I use it as well.

I could separate the loading of the data from form events into a separate
procedure(s) but I usually put it triggered from the activate event because
I am often altering the form components, eg making some visible or invisible
or enabled/disabled and other visual alterations of the components according
to the data being shown and these can only be done once the form is being
activated.

OK some sort of once only load variable is needed then - I thought there
might be a way around it.

Out of curiosity, does anyone know if there a rule that governs about
whether Delphi/Windows fires the activate event for FormB again when other
forms over the top (FormC FormD) are closed?

John

-----Original Message-----
From: Stacey Verner [mailto:[EMAIL PROTECTED] Sent: Thursday, 5 October 2006 8:13 a.m.
To: [EMAIL PROTECTED]; NZ Borland Developers Group - Delphi List
Subject: RE: [DUG] Forms Activate Design decision


We use FormActivate for loading data as well, however we use a guarf
variable to make sure it happened only once.

e.g.
procedure TForm1.FormCreate(Sender: TObject);
begin
 FFormActivated := False;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
 if not FFormActivated then begin
   FFormActivated := True;
   // Do stuff
 end;
end;

We actually have a FirstTimeFormActivate method to override for this kind of
thing in our base form class.

Using FormActivate is great for triggering loading data because it allow the
form to be shown first, and then the data is loaded so the users know
something is going on. If you load data in FormCreate or FormShow then the
screen doesn't show untill all of the daya is loaded.

Stacey


-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
On Behalf Of John Bird
Sent: Wednesday, 04 October 2006 17:53
To: 'NZ Borland Developers Group - Delphi List'
Subject: [DUG] Forms Activate Design decision

A design question:

FormA (Main form) open all the time.

FormA opens FormB, and FormB filled with Data in On-activate event

FormB may open FormC or FormD for further details

When FormC or FormD is closed, sometimes FormB on-activate event is fired
again, sometimes not.

I haven't figured yet what decides whether FormB activate event gets fired
again - as far as I can tell its not whether FormC or FormD is modal or not.
I would prefer either it wasn't fired, or I could tell when it was going to
be so as to exit the event, as sometimes the data takes time to load again.

For instance opening Rave Report rvSystem printing options always does cause
a form (eg FormB) to get re-activated when it closes.

Is there a way I have missed to manage this?, or do I have to do some
housekeeping, eg maintain my own state variable somewhere:

FormBLoadedData:Boolean

And in the FormB activate event have something like

        if FormBLoadedData=true then exit;
        LoadtheData;
        FormBLoadedData:=true;

(this will prevent subsequent forms C and D reloading the data on FormB when
they close)

And on the close event for FormB have

        FormBLoadedData:=false;


John


_______________________________________________
Delphi mailing list
[email protected] http://ns3.123.co.nz/mailman/listinfo/delphi


__________ NOD32 1.1461 (20060329) Information __________

This message was checked by NOD32 antivirus system. http://www.eset.com



_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi



_______________________________________________
Delphi mailing list
[email protected]
http://ns3.123.co.nz/mailman/listinfo/delphi

Reply via email to