![]() |
Mainform erst anzeigen nachdem andere Form geschlossen wurde
hi!
vor dem eigentlichen programmstart soll ein kleines fenster angezeigt werden, wo der benutzer einige daten eingeben muss. wenn dann per button bestätigt wird, wird dieses geschlossen und das eigentliche programm angezeigt. ich bekomme es aber absolut nicht hin, dass nur dieses formular (Form2) ohne das programm (Form1) angezeigt wird. was ich unter anderem schon versucht habe: - im objektinspektor: form1 visible auf false, form2 visible auf true - erstellungsreihenfolge geändert, dann wird es zwar richtig angezeigt, jedoch beendet sich das programm beim schließen des abfragefensters - bei oncreate von form1 visible auf false das blöde ist ja, dass das anzeigen des programmfensters irgendwie erzwungen wird, da das abfragefenster zuerst angezeigt wird und dann vom programmfenster verdeckt wird. kann mir jemand eine sichere methode nennen oder tipps geben, was ich noch alles versuchen kann? danke. |
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
|
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
hab so was auch ma gemacht, ich glaub ich hab einfach form1, also die mainform, genommen für die einstellungen, dann form1 gehided und form2 geshowed (form2 war dann das eigentliche progamm)..
is zwar net die beste lösung sollte aber funktioniern. nfg |
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
du meinst ein splashscreen, hoffe ich.
ich hab da mal gebastelt. ich habs so geloest:
Delphi-Quellcode:
begin
SplashForm := TSplashForm.Create(Application); try SplashForm.Show; Application.Initialize; SplashForm.Update; //Sleep(1000); //delay-command while SplashForm.ProgressBar1.Position < 100 do begin SplashForm.ProgressBar1.StepIt; if (SplashForm.ProgressBar1.Position = 10) then begin end; if (SplashForm.ProgressBar1.Position = 20) then begin end; //usw usw mit den positions um sone art loading balken zu simulieren. //hab da einfach aufgaben beim start aufgeteilt (war bisschen aufwendigeres zeugs.. Sleep(20); //damits wirklich auch aufwendiger ausschaut ^^ Application.ProcessMessages; end; if paramstr(1) = '/h' then application.ShowMainForm := False; Application.CreateForm(TMainForm, MainForm); SplashForm.Hide; finally SplashForm.Free; end; Application.Run; |
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
@turbopascal
ehrlich gesagt finde ich in dem thread nichts, was mir weiterhelfen könnte :S @prinz_inzide das habe ich mir auch schon überlegt, aber dann müsste ich einige sachen wieder abändern und außerdem bezweifle ich, dass dann nicht noch andere unerwartete probleme auf mich zukommen werden. @beckman so ungefähr habe ich das hier schon irgendwo mal gelesen, aber auf die art funktioniert es leider auch nicht. ich habe eine weile daran herumprobiert und habe herausgefunden, dass es so erzwungenermaen geht:
Delphi-Quellcode:
das showmodal scheint das anzeigen der mainform solage zu unterdrücken, wie Form2 geöffnet ist.
begin
Form2 := TForm2.Create(Application); try Form2.ShowModal; Application.Initialize; Form2.Update; Application.CreateForm(TForm1, Form1); [...] finally Form2.Free; end; Application.Run; naja, mehr getrickst als recht, aber was solls. |
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
Mach dir zwei Formulare, eine Hauptform und eine Nebenform...
Hauptform
Delphi-Quellcode:
Nebenform:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type THauptform = class(TForm) Label1: TLabel; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var Hauptform: THauptform; implementation uses Unit2; {$R *.dfm} procedure THauptform.FormCreate(Sender: TObject); var LNebenForm: TNebenform; begin Hauptform.Hide; LNebenForm := TNebenform.Create(self); try if LNebenForm.ShowModal = mrOk then HauptForm.Show; finally LNebenform.Free; end; end; end.
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TNebenform = class(TForm) Label1: TLabel; Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Nebenform: TNebenform; implementation {$R *.dfm} procedure TNebenform.Button1Click(Sender: TObject); begin ModalResult := mrOK; end; end. ..den Rest kannst du an deinen eigenen Code anpassen... Gruß Tyrael |
Re: Mainform erst anzeigen nachdem andere Form geschlossen w
Ich hätte es so gelöst:
Delphi-Quellcode:
Wichtig ist die Erwähnung in uses, bei Unit2 aber hinter implementation.
// HauptForm
unit HauptUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, AnfangsUnit; type THauptForm = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var HauptForm: THauptForm; implementation {$R *.dfm} procedure THauptForm.FormCreate(Sender: TObject); begin Application.ShowMainForm := false; AnfangsForm.Show; end; end. // Formular, das zuerst angezeigt werden soll: unit AnfangsUnit; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TAnfangsForm = class(TForm) WeiterButton: TButton; procedure WeiterButtonClick(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var AnfangsForm: TAnfangsForm; UserEingabe : Boolean; implementation {$R *.dfm} uses HauptUnit; procedure TAnfangsForm.WeiterButtonClick(Sender: TObject); begin UserEingabe := true; AnfangsForm.Close; HauptForm.Show; end; proceudre TAnfangsForm.FormClose(Sender: TObject; var Action: TCloseAction); begin if not (UserEingabe) then Aplication.Terminate; end; end. Das OnClose-Ereignis beendet die Anwendung, wenn der User nichts getan hat. Sonst bleibt das Programm ohne sichtbares Fenster trotzdem da. Gruß, ManuMF |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:43 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz