![]() |
Form1 bei OnCreate Ereignis beenden
Hallo!
Ich erzeuge beim OnFormCreate Ereignis u.a. eine Datei. Wenn diese nicht erstellt werden kann, möchte ich das Programm beenden. Leider Funktioniert aber der Aufruf Form1.Close nicht. Das Ganze sieht z.Z. so aus:
Delphi-Quellcode:
Kann mir jemand sagen warum das nicht funzt?
if FileExists('FileName') then
if not DeleteFile('FileName') then begin Application.MessageBox('Geht nicht', 'Meldung', 48) ; form1.Close ; //funzt nicht end ; Gruss Michael |
Re: Form1 bei OnCreate Ereignis beenden
Da im OnCreate das Formular erzeugt wird, kann man es noch nicht schließen, da es ja noch nicht vorhanden ist.
Im OnActivate würde es gehen, allerdings siehtst du dann für einen Sekundenbruchteil dein Formular. |
Re: Form1 bei OnCreate Ereignis beenden
Zitat:
Oder noch besser. In den Quellcode der Aplikation. Dann braucht das Fenster garnicht erst erzeugt werden. |
Re: Form1 bei OnCreate Ereignis beenden
Hallo glunzl,
dieses sch*** Problem hatte ich auch schon und ich bin daran zerbrochen. Zur Strafe habe ich das dann so gemacht:
Delphi-Quellcode:
Gruß DANNYBOY
// wir befinden uns in Create des Formulars
Application.Terminate; HALT; |
Re: Form1 bei OnCreate Ereignis beenden
@Matze: Danke für die Erklärung. Leuchtet jetzt ein :-)
@Sharky: Zitat:
Michael |
Re: Form1 bei OnCreate Ereignis beenden
Lass dir die Projektdatei anzeigen, füge in dem Uses Abschnitt SysUtils hinzu, damit du FileExists verwenden kannst, und mach davon das Erzeugen der Weiteren Formulare und das Starten der Anwendung abhängig.
Ach ja die Projekt-Datei ist die Datei mit der endung dpr. Sie enhält das eigentliche Hauptprogramm. |
Re: Form1 bei OnCreate Ereignis beenden
Zitat:
Delphi-Quellcode:
[Edit]Das Luckie war wieder schneller ;-) [/Edit]
program Project1;
uses Forms, SysUtils, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; if FileExists('c:\test.kkk') then if not DeleteFile('c:\test.kkk') then begin Application.MessageBox('Geht nicht', 'Meldung', 48) ; end else begin Application.CreateForm(TForm1, Form1); end; Application.Run; end. |
Re: Form1 bei OnCreate Ereignis beenden
Danke Euch!
Michael |
Re: Form1 bei OnCreate Ereignis beenden
@Dannyboy: Noch besser :-)
Michael |
Re: Form1 bei OnCreate Ereignis beenden
Zitat:
Ich dachte immer Terminate beendet die Anwendung nicht korrekt. :gruebel: |
Re: Form1 bei OnCreate Ereignis beenden
grmpf :-(
|
Re: Form1 bei OnCreate Ereignis beenden
Hallo,
man könnte im OnCreate dem Formular mit PostMessage auch eine Botschaft schicken.
Delphi-Quellcode:
PostMessage(Handle,WM_CLOSE,0,0);
|
Re: Form1 bei OnCreate Ereignis beenden
Zitat:
|
Re: Form1 bei OnCreate Ereignis beenden
wie @jens schon sagt botschaft mit postmessage schicken
etwa so:
Delphi-Quellcode:
unit Unit1;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; const WM_MyCloseinCreate = WM_USER + 999; type TForm1 = class(TForm) procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure MyCloseinCreate(var Message: TMessage); message WM_MyCloseinCreate; public { Public-Deklarationen } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.MyCloseinCreate(var Message: TMessage); begin close; end; procedure TForm1.FormCreate(Sender: TObject); begin // mach was ... // jetzt soll im create close gemacht werden PostMessage(self.handle, WM_MyCloseinCreate, 0, 0); end; end. |
Re: Form1 bei OnCreate Ereignis beenden
Warum so umständlich?
Delphi-Quellcode:
Das reicht schon.
procedure TForm1.FormCreate(Sender: TObject);
begin PostMessage(Handle, WM_CLOSE, 0, 0); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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 by Thomas Breitkreuz