Splash, Logowanie i MainForm

0

Witajcie.

Mam pewien mały problem z 3 formami: MainForm, Logowanie i Splash.
Chciałem aby po uruchomieniu programu, zależnie od opcji które wczyta z pliku ini,
pokazał SplashScreen, który po 5 sec znika, zaraz po nim dormularz do logowania no i na koniec głowny formularz programu.

Chciałem obsłużyć to wszystko z MainForm gdyż musze wczytać opcje. Chowanie się Splash-a po 5 sek mam już.
Dla MainFOrm ustawiłem:

procedure To_Glowna.FormCreate(Sender: TObject);
begin
  o_Splash := To_Splash.Create(nil);
  o_Splash.ShowModal;

  o_Haslo := To_Haslo.Create(nil);
  o_Haslo.ShowModal;
end;

Ale niestety pokaże się Splash, po 5 sek znika i później już Od razu główna forma, a gdzie Haslo?? :(

Macie może pomysł jak to osiagnąć??

0

chyba powinno dzialac:

procedure To_Glowna.FormCreate(Sender: TObject);
begin
Application.ShowMainForm:=False; //ukryje forme glowna...
  o_Splash := To_Splash.Create(nil);
  o_Splash.ShowModal;

  o_Haslo := To_Haslo.Create(nil);
  o_Haslo.ShowModal;
Form1.Show; //...i dopiero teraz zacznie ja pokazywac.
end;
0

Niestety jest tak samo :(.

W razie czego ta aplikacja jest tutaj: http://orlinet.internetdsl.pl/temp/test.rar

0

takie rzeczy robi się w pliku dpr aplikacji - działa na 100%, dużo lepiej i przede wszystkim ładniej (dziwnie to wygląda jak program się cały odpala, pyta o hasło i przy błędnym się zamyka). Poza tym możesz na splasha dać progress i wyświetlać co aktualnie program robi (wczytywanie opcji, logowanie, tworzenie czegoś tam itd)

0

Tak wygląda mój *.dpr:

  Application.Initialize;
  SplashForm := TSplashForm.Create(Application);
  SplashForm.Show();
  SplashForm.Update();
  Application.CreateForm(TMDIMainForm, MDIMainForm);
  Application.CreateForm(TPasswordDlg, PasswordDlg);
  Application.CreateForm(TAboutBox, AboutBox);
  Application.CreateForm(TAddDel, AddDel);
  Application.CreateForm(TScrapColorForm, ScrapColorForm);
  SplashForm.Hide();
  SplashForm.Free();
  Application.Run;
0

OK, ale jeśli chcesz dodać do opcji programu możliwość wyłączenia pokazywania Splash-a to wtedy taki plik *.dpr się nie nada :(.

W moim przypadku, musi być wszystko sterowane z głownej formy programu, tylko dlaczego niechce on pokazać pokolei dwóch innych form (poleceniem ShowModal) tak jak podałem w pierwszym poście??

0

ech...
po 1:

procedure To_Splash.Timer1Timer(Sender: TObject);
begin
  o_Splash.Close; //nie hide, tylko close, bo inaczej zatrzyma sie na showmodal!
//  o_Glowna.Show; -tego nie dawaj, bo po co?
  Timer1.Enabled := False;
end;

po 2:

procedure To_Glowna.FormCreate(Sender: TObject);
begin
Application.ShowMainForm := False; //ukryje forme glowna...
  If CheckBox1.Checked then
  begin
    o_Splash := To_Splash.Create(nil);
    o_Splash.ShowModal;
  end;

  If CheckBox2.Checked then
  begin
    o_Haslo := To_Haslo.Create(nil);
    o_Haslo.ShowModal;
  end;

o_Glowna.Show;
end;

po 3:
pozdrawiam ;]

0

o qrcze, działa :D.
Dzięki wielkie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1