[DUG] Forms Activate Design decision
Stephen Barker
Steve at webdata.co.nz
Thu Oct 5 11:11:07 NZDT 2006
John,
If you want this action to run only once, and after creation, then create a
custom message, and fire the message at the end of the OnCreate.
E.g.
procedure Start(var Message: TWMChar); message messageStart;
procedure TformMain.FormCreate(Sender: TObject);
begin
LoadIniSettings;
ForceDirectories(ExtractFilePath(Application.ExeName)+'\photos');
PageControl1.ActivePage := tsBrowser;
if AnsiSameText('B', ParamStr(1)) then // Batch mode
PostMessage(handle, messageStart, 0, 0);
end;
procedure TformMain.Start(var Message: TWMChar);
//var
// t1, t2 : cardinal;
begin
//t1 := GetTickCount;
btnLoginClick(nil);
btnDeleteAllCarsClick(nil);
//t2 := GetTickCount;
btnUploadAllCarsClick(nil);
//ShowMessage('Deleting:
'+IntToStr(trunc((t2-t1)/1000))+#13#10+'Uploading:
'+IntToStr(trunc((GetTickCount-t2)/1000)));
Application.Terminate;
end;
Regards,
Steve
> -----Original Message-----
> From: John Bird [mailto:johnkbird at paradise.net.nz]
> Sent: Thursday, 5 October 2006 10:02 a.m.
> To: 'Paul McKenzie'; 'NZ Borland Developers Group - Delphi List'
> Subject: RE: [DUG] Forms Activate Design decision
>
> It looks to me that if a subsequent modal form FormC is
> closed then FormB
> activate event is NOT fired. If the subsequent form is
> non-modal it looks
> like the event is fired...this would make some sense if
> processing for FormB is suspended while the modal form FormC flies...
>
> I was mainly wondering because of the Rave rvSystem print
> dialogs...they seem to be modal as far as I can tell but do
> fire the activate event on the form that shows them when they
> close, particularly the print preview.
>
> John
>
>
> -----Original Message-----
> From: Paul McKenzie [mailto:paul at smss.org.nz]
> Sent: Thursday, 5 October 2006 9:42 a.m.
> To: johnkbird at paradise.net.nz; NZ Borland Developers Group -
> Delphi List
> Subject: Re: [DUG] Forms Activate Design decision
>
>
> 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:stacey at cjntech.co.nz]
> >Sent: Thursday, 5 October 2006 8:13 a.m.
> >To: johnkbird at paradise.net.nz; 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: delphi-bounces at ns3.123.co.nz
> >[mailto:delphi-bounces at ns3.123.co.nz]
> >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
> >Delphi at ns3.123.co.nz 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
> >Delphi at ns3.123.co.nz 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
> Delphi at ns3.123.co.nz
> http://ns3.123.co.nz/mailman/listinfo/delphi
>
> --
> No virus found in this incoming message.
> Checked by AVG Free Edition.
> Version: 7.1.407 / Virus Database: 268.12.12/462 - Release
> Date: 3/10/2006
>
>
More information about the Delphi
mailing list