![]() |
StartForm schließen!!!
Hallo
Ich hab eine Art Startbildschirm geschrieben. der lässt einen Countdown herunterzählen und wenn er Null erreicht wird ein button freigegeben. Beim klick auf den button startet sich ein anderes Fenster. Jetzt möchte ich, dass der Startbildschrim geschlossen wird. Wie geht dass. Wenn ich Startbildschirm.close; benutze dann ist alles weg, und der Debugger schaltet sich wieder aus. Wenn ich Startbildschirm.destroy; benutze dann kreig iche einen Assembler Fehler. Wenn ich Startbildschirm.deaktivate; benutze dann hab ich das olle startbild auf dem Desktop kleben Wenn ich Startbildschirm.enable:=false; benutze dann hab ich das selbe wie deaktivate Wenn ich Startbildschirm.hide; benutze sieht es zwar so aus als würds klappen aber wenn ich dann das Hauptfenster schließe geht der Debugger nicht aus. Am liebsten würd ich das fenster "wirklich schließen" also keine reste mehr im Ram hinterlassen. MfG snow |
Re: StartForm schließen!!!
Nimm hide und stelle sicher, dass das Hauptfenster mit close geschlossen wird, wenn dein anderes Formular beendet wird (z.B. onClose).
|
Re: StartForm schließen!!!
Hi,
Du musst unter Projekt -> Optionen -> Formular dein eigentliches Hauptformular dort als Hauptformular festlegen! Ansonsten ist dein Startbildschirm dein Hauptformular und wenn das Hauptformular geschlossen wird, wird auch die Anwendung geschlossen! mfG mirage228 |
Re: StartForm schließen!!!
Gut hab ich probiert.... Das steht jetzt in der projekt.lpr
Delphi-Quellcode:
So aber irgendwie wills noch nicht
program MBSS;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset Forms { add your units here }, startfensterunit, Hauptanzeige; begin Application.Initialize; Application.CreateForm(Thauptfenster, hauptfenster); Application.Run; end. :gruebel: jetzt startet nur noch das hauptfenster. Ich hab zwar probiert im Hauptfenster das startfenster einzubinden, da das hauptfenster aber im startfenster schon eingebunden ist (das startfenster schaltet das hauptfenster frei) Hab ich einen circuit gebaut. MfG snow |
Re: StartForm schließen!!!
Blicke ich das
du willst sagen wir Form1 anzeigen dann schliesen und mit Form2 weiterarbeiten ?
Delphi-Quellcode:
So sah das dann mal ausbegin Application.Initialize; Application.CreateForm(Tform1, form1); Application.CreateForm(Tform2, form2); Application.Run; end. und das wird dann zu
Delphi-Quellcode:
begin Application.Initialize; Application.CreateForm(Tform2, form2); Application.Run; end.
Delphi-Quellcode:
So würde ich es mal Probieren ...
Procedure TForm2.create(Sender:Tobject);
begin Application.CreateForm(Tform1, form1); // und dann irgendwann Form1.showmodal // und nach dem Modalen kannst dann Form1.Destroy oder so aufrufen. end; |
Re: StartForm schließen!!!
Hallo,
es gibt zwei verschiedene rangfolgen. Einmal Welche Form deiner Application.mainform entspricht und die rangfolge in denen die Forms Kreiert werden. Das Problem was du einerseits hast ist, das alle Forms vor deiner Mainform geladen werden sollte (project.pas Initialisierungsreinfolge) damit du von deiner Mainform aus darauf zugreifen kannst. Andererseits möchtest du aber nicht das die Mainform vor der "startform" gezeigt wird was im Compiler aber klar so vergegeben ist. Dieses Problem hat z.b. Tuneup Utilities auch, weswegen Sie (vorsicht subjektive einschätzung) ein Extra Programm vorher laden, den sogenannten "Integrator.exe" Es gibt 2 Lösungen für dieses Problem: Die saubere ist die, dass du dasselbe machst wie tuneup. Eine extra exe, die dein Hauptprogramm startet. Wenn deine startexe die funktion eines nag-screens ausfüllen soll, musst du natürlich auch über die komplette palette an sicherheitsmassnahmen nachdenken und diese beachten. Übrigens Button1.enabled:=false ist innerhalb von 20sec gepatcht, sollte also mehrere mechanismen haben...egal. Die unsaubere ist, das du beim Oncreate deiner Mainform diese auf Visible:=false stellst oder auf mainform.hide gehst und dann deine startform.showmodal; anzeigen lässt. Ich hoffe das alles so korrekt beschrieben ist^^ , und das es weiterhilft. greez gabneo |
Re: StartForm schließen!!!
ich habs jetzt mal mit showmodal gemacht. Ich habs in die onreate-procedure vom hauptfenster geschrieben. WEnn ich jetz starte kreig ich
projekt raised exeption class external SigSEGV wenn ich es in die on show-procedure schreibe dann klappt es. aber wenn ich dann das geöffnete fenster schließe dann geht es gleich wieder auf?? wie behebe ich das? MfG snow |
Re: StartForm schließen!!!
Hi,
sorry ich hatte ganz vergessen, das man auf den Canvas eines Objektes nicht zur erstellzeit zugreifen kann, nur vorher und hinterher. Aber das stützt nur meine aussage, probiere lieber die "saubere" Variante! Ansonsten, hat dieser Code bei mir funktioniert. Ich lasse einen Timer loslaufen, der nach dem erstellen der Form abgelaufen ist und ich somit wieder zugriff auf die Grafischen Eigenschaften der Form habe. hoffe das hilft. greez gabneo PS: unsaubere lösung:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls; type TForm1 = class(TForm) Timer1: TTimer; procedure FormShow(Sender: TObject); procedure Timer1Timer(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form1: TForm1; implementation uses Unit2; {$R *.dfm} procedure TForm1.FormShow(Sender: TObject); begin form2.show; Timer1.Interval:=100; Timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin Timer1.Enabled:=false; form1.Hide; end; end. |
Re: StartForm schließen!!!
In der Tutorial-Sparte gibt es ein wunderschönes Tutorial zu Splashscreen von sakura.
|
Re: StartForm schließen!!!
Liste der Anhänge anzeigen (Anzahl: 2)
Ich bin am verzweifeln!
Ich hab den Timer mal auf 2000 eingestellt. hat auch geklapp. 2 sekunden nach dem programmstart öffnet sich mein anderes Fenster. Bei dem fenster hab ich einen button, der Form2.close; ausführt. Doch es passiert nix Als ob ich gar nix in das on.click ereigniss geschreiben hätte. Keine fehlermeldung GAR NIX!! Es ist zum heulen! Warum läufts nicht!! MfG snow
Delphi-Quellcode:
program MBSS;
{$mode objfpc}{$H+} uses {$IFDEF UNIX}{$IFDEF UseCThreads} cthreads, {$ENDIF}{$ENDIF} Interfaces, // this includes the LCL widgetset Forms { add your units here }, hauptanzeige, startfenstereinheit; begin Application.Initialize; Application.CreateForm(THauptfenster, Hauptfenster); Application.Run; end. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:20 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