AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

StartForm schließen!!!

Ein Thema von snow · begonnen am 20. Sep 2007 · letzter Beitrag vom 21. Sep 2007
Antwort Antwort
Seite 1 von 2  1 2      
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#1

StartForm schließen!!!

  Alt 20. Sep 2007, 16:53
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
  Mit Zitat antworten Zitat
Apollonius

Registriert seit: 16. Apr 2007
2.325 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 17:00
Nimm hide und stelle sicher, dass das Hauptfenster mit close geschlossen wird, wenn dein anderes Formular beendet wird (z.B. onClose).
Wer erweist der Welt einen Dienst und findet ein gutes Synonym für "Pointer"?
"An interface pointer is a pointer to a pointer. This pointer points to an array of pointers, each of which points to an interface function."
  Mit Zitat antworten Zitat
Benutzerbild von mirage228
mirage228

Registriert seit: 23. Mär 2003
Ort: Münster
3.750 Beiträge
 
Delphi 2010 Professional
 
#3

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 17:05
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
David F.

May the source be with you, stranger.
PHP Inspection Unit (Delphi-Unit zum Analysieren von PHP Code)
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#4

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 17:19
Gut hab ich probiert.... Das steht jetzt in der projekt.lpr

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 }, startfensterunit, Hauptanzeige;

begin
  Application.Initialize;
  Application.CreateForm(Thauptfenster, hauptfenster);
  Application.Run;
end.
So aber irgendwie wills noch nicht



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
  Mit Zitat antworten Zitat
Benutzerbild von Corpsman
Corpsman

Registriert seit: 8. Nov 2005
Ort: nähe Stuttgart
981 Beiträge
 
Delphi XE2 Professional
 
#5

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 17:26
Blicke ich das

du willst sagen wir Form1 anzeigen dann schliesen und mit Form2 weiterarbeiten ?


Delphi-Quellcode:

begin
  Application.Initialize;
  Application.CreateForm(Tform1, form1);
  Application.CreateForm(Tform2, form2);
  Application.Run;
end.
So sah das dann mal aus

und das wird dann zu

Delphi-Quellcode:

begin
  Application.Initialize;
  Application.CreateForm(Tform2, form2);
  Application.Run;
end.
Delphi-Quellcode:
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;
So würde ich es mal Probieren ...
Uwe
My Sitewww.Corpsman.de

My marble madness clone Balanced ( ca. 70,0 mb ) aktuell ver 2.01
  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 17:32
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
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#7

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 18:37
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
  Mit Zitat antworten Zitat
gabneo

Registriert seit: 15. Okt 2006
Ort: Deutsche Toskana :)
93 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#8

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 18:56
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.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#9

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 19:37
In der Tutorial-Sparte gibt es ein wunderschönes Tutorial zu Splashscreen von sakura.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
snow

Registriert seit: 28. Jun 2007
277 Beiträge
 
#10

Re: StartForm schließen!!!

  Alt 20. Sep 2007, 20:27
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.
Angehängte Dateien
Dateityp: pas hauptanzeige_176.pas (874 Bytes, 1x aufgerufen)
Dateityp: pas startfenstereinheit_939.pas (1,5 KB, 3x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:27 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz