2009-05-28 3 views
0

(Unit1.pas)Wie erstellt man einen Begrüßungsbildschirm mit einer Fortschrittsanzeige in Turbo Delphi?

unit Unit1; 

    interface 

    uses 
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
     Dialogs, StdCtrls, ExtCtrls,unit2; 

    type 
     TForm1 = class(TForm) 
     Button1: TButton; 
     Label1: TLabel; 
     Timer1: TTimer; 
     procedure Timer1Timer(Sender: TObject); 
     private 
     { Private declarations } 
     public 
     { Public declarations } 
     procedure OpenSplash; 
     procedure ShowProgress; 
     procedure CloseSplash; 
     end; 

    var 
     Form1: TForm1; 
      X: Integer; 
      Total: Integer; 
      Percent: Integer; 

    implementation 

    {$R *.dfm} 
    procedure TForm1.OpenSplash; 
    begin 
     Label1.Caption := ''; 
     Show; 
     Update; 



    end; 

procedure TForm1.CloseSplash; 
begin 
    Form1.Destroy; 
end; 


procedure TForm1.ShowProgress; 
begin 
Label1.caption:=''; 
    Total := 1000; 
     for X := 1 to Total do 
     begin 
     Sleep(5); 
     Percent := (x * 100) div Total; 
     Label1.caption := StringOfChar('|', Percent) + IntToStr(Percent) + '%'; 
     Label1.Repaint; 

     end; 
end; 

procedure TForm1.Timer1Timer(Sender: TObject); 
begin 
    Close; 
    Release; 
    Form1 := nil; 
end; 

end. 

(Unit2.pas)

unit Unit2; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls; 

type 
    TForm2 = class(TForm) 
    memo1: TMemo; 

    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form2: TForm2; 

implementation 

{$R *.dfm} 
function Splash: TForm2; 
begin 
    if Form2 = nil then begin 
    Form2 := TForm2.Create(Application); 
    end; 
    result := Form2; 
end; 
end. 

(* .dpr)

program Project1; 

uses 
    Forms, 
    Unit1 in 'Unit1.pas' {Form1}, 
    Unit2 in 'Unit2.pas' {Form2}; 

{$R *.res} 

begin 
    Application.Initialize; 
    Form1.OpenSplash; 
    Form1.ShowProgress; 
    Application.CreateForm(TForm1, Form1); 
    Form1.CloseSplash; 
    Application.Run; 
end. 
+0

Ich aktualisierte meine Codierung ... immer noch einige Fehler gefunden ... Hilf mir bitte ... – Otip88

Antwort

1

In Ihrem * .dpr, so etwas wie dies versuchen:

begin 
    Application.Initialize; 
    FormSplash := TFormSplash.Create(Application); 
    FormSplash.OpenSplash; 
    // Do the rest of your initialisation... 
    // MAKE SURE THERE'S NO CreateForm FOR FormSplash! 
    FormSplash.ShowProgress("Creating a form..."); 
    Application.CreateForm(... , ...); 
    ... 
    // When you want to modify the splashscreen, do something like this: 
    FormSplash.ShowProgress("Doing something else..."); 
    ... 
    // Close the splash screen 
    FormSplash.CloseSplash; 
    Application.Run; 
end. 

Sie sollten keine benötigen Verweise auf Ihren FormUtama-Typ.

+0

ich habe es so getan Programm Project1; verwendet Formulare, Splash in 'Splash.pas' {FormSplash}, SplashProject in 'SplashProject.pas' {Form1}; {$ R * .res} beginnen Application.Initialize; Application.OpenSplash; Application.CreateForm (TForm1, Form1); Splash.CloseSplash; Anwendung.Run; Ende. fand noch einige Fehler – Otip88

+0

meine Antwort aktualisiert :) – moobaa

+0

Ich brauche 3 Prozess nur: 1. Application.Intialize 2.FormSplash.OpenSplash; FormSplash.ShowProgress (FormSplash, TFormSplash); 3.Application.CreateForm (FormUtama, TFormUtama); FormSplash.CloseSplash; Anwendung.Lauf; aber immer noch habe ich das gleiche Problem mit "ShowProgress" auf FormUtama – Otip88

1

in Ihrem Projekt Code, den Sie wie folgt tun:

Form1.OpenSplash; 
    Form1.ShowProgress; 
    Application.CreateForm(TForm1, Form1); 
    Form1.CloseSplash; 

Eigentlich, bevor Sie verwenden Methoden aus Form1 es zu schaffen. Diese widmet sich Probleme geben ...

+0

danke !! Du öffnest meine Augen !!! es funktioniert jetzt... – Otip88

0

Hier sind die conclution

program Project1; 

uses 
    Forms, 
    Unit1 in 'Unit1.pas' {Form1}, 
    Unit2 in 'Unit2.pas' {Form2}; 

{$R *.res} 

begin 
    Application.Initialize; 
    Form1 := TForm1.Create(Application); 
    Form1.OpenSplash; 
    Form1.ShowProgress; 
    Application.CreateForm(TForm2, Form2); 
    Form1.CloseSplash; 
    Application.Run; 
end. 

Einheit 1

unit Unit1; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls, ExtCtrls,unit2; 

type 
    TForm1 = class(TForm) 
    Button1: TButton; 
    Label1: TLabel; 
    private 
    { Private declarations } 
    public 
    { Public declarations } 
    procedure OpenSplash; 
    procedure ShowProgress; 
    procedure CloseSplash; 
    end; 

var 
    Form1: TForm1; 
     X: Integer; 
     Total: Integer; 
     Percent: Integer; 

implementation 

{$R *.dfm} 
procedure TForm1.OpenSplash; 
begin 
    Label1.Caption := ''; 
    Show; 
    Update; 



end; 

procedure TForm1.CloseSplash; 
begin 
    Form1.Destroy; 
end; 


procedure TForm1.ShowProgress; 
begin 
Label1.caption:=''; 
    Total := 1000; 
     for X := 1 to Total do 
     begin 
     Sleep(5); 
     Percent := (x * 100) div Total; 
     Label1.caption := StringOfChar('|', Percent) + IntToStr(Percent) + '%'; 
     Label1.Repaint; 

     end; 
end; 

end. 

Einheit 2

unit Unit2; 

interface 

uses 
    Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, 
    Dialogs, StdCtrls; 

type 
    TForm2 = class(TForm) 
    memo1: TMemo; 

    private 
    { Private declarations } 
    public 
    { Public declarations } 
    end; 

var 
    Form2: TForm2; 

implementation 

{$R *.dfm} 

end. 

Vielen Dank für diejenigen, die eingeheimst Frage.

1

Vielleicht ist this für Sie interessant.

0

diesen Code hinzufügen, nachdem die Anweisung des Quellcodes Beginn des Projekts (die .dpr-Datei):

Application.Initialize; //this line exists! 
SplashScreen := TMySplashScreen.Create(nil) ; 
SplashScreen.Show; 
SplashScreen.Update; 

Nach dem letzten Application.Create() und vor Application.Run:

SplashScreen.Hide; 
SplashScreen.Free;