|
| Vis vindue og initialiser Fra : Ingolf |
Dato : 18-02-02 21:03 |
|
Hej
Jeg har længe undret mig hvordan man på rigtig delphi-manér, bedst placerer
sin initialiserings procedure i et Delphi program.
Mit program vil jeg gerne have til at vises med det samme, og bagefter
initialiseres... alle kontroller har jeg sat enabled:=false som default, og
de blir først aktive når alt er initialiseret.
Hvis jeg placerer min initialisering i Form.OnCreate Event'en, så vil intet
vindue vises før former ER skabt.
Hvis jeg placerer min initialisering i Form.OnActivate Event'en, så vises
vinduet først, og initialisering køres bagefter. Men OnActivate bliver kørt
hver gang vinduet aktiveres, så jeg måtte lave en global boolean variable,
"AppHaveBeenInitiated", som jeg sætter til FALSE i OnCreate event'et. i
OnActivate event'et gør jeg så:
if not AppHaveBeenInitiated then form1.init;
// det virker.. men er "klodset"
Der er et hav af andre måder.. f. eks at sætte "form.init" i DPR delen af et
delphi projekt osv osv.. men hvordan gøres det helt rigtigt?
F. eks vil jeg gerne sætte en "Splash Screen" ind senere.. denne vises
indtil programmet er initialiseret.
| |
René Jensen (19-02-2002)
| Kommentar Fra : René Jensen |
Dato : 19-02-02 00:00 |
|
Ingolf wrote:
> Jeg har længe undret mig hvordan man på rigtig delphi-manér, bedst placerer
> sin initialiserings procedure i et Delphi program.
>
> Mit program vil jeg gerne have til at vises med det samme, og bagefter
> initialiseres... alle kontroller har jeg sat enabled:=false som default, og
> de blir først aktive når alt er initialiseret.
>
> Hvis jeg placerer min initialisering i Form.OnCreate Event'en, så vil intet
> vindue vises før former ER skabt.
>
> Hvis jeg placerer min initialisering i Form.OnActivate Event'en, så vises
> vinduet først, og initialisering køres bagefter. Men OnActivate bliver kørt
> hver gang vinduet aktiveres, så jeg måtte lave en global boolean variable,
> "AppHaveBeenInitiated", som jeg sætter til FALSE i OnCreate event'et. i
> OnActivate event'et gør jeg så:
>
> if not AppHaveBeenInitiated then form1.init;
> // det virker.. men er "klodset"
>
> Der er et hav af andre måder.. f. eks at sætte "form.init" i DPR delen af et
> delphi projekt osv osv.. men hvordan gøres det helt rigtigt?
>
> F. eks vil jeg gerne sætte en "Splash Screen" ind senere.. denne vises
> indtil programmet er initialiseret.
Hvis jeg forstår din problematik korrekt, så kan du placere dine
initalisering før din form bliver oprettet ved at skrive kalde din
funktion/procedure før Application.Initialize; i selve projektets hoved
fil (*.DPR), f.eks. vil følgende kode komme op med en tekstboks før din
form bliver vist:
program Project1;
uses
Forms,
Dialogs,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
ShowMessage('Denne tekstboks vises før default-form.');
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
.... samme metode bruges til splash-screens...
--
Med venlig hilsen,
René Jensen
Once a upon a time a wise man said to me:
"I consider Windows like I consider bad weather ... I accept it and hope
for something better"
| |
|
|