Autor Beitrag
KeinePanik
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 131



BeitragVerfasst: So 15.09.02 22:57 
Also mein Programm benötigt mehrere Dateien ... Deshalb überprüfe ich in der (Haupt-)Form.create ob auch alle da sind ...

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
procedure TForm1.FormCreate(Sender: TObject);
begin
if fileexists('sowieso.exe') then {blabla ...} else
begin
showmessage('Fehler : Die Datei "sowieso.exe" befindet sich nicht im Verzeichniss !!');
Fehler := true;
close; // Mit Application.terminate funzt es ...
end;


Meine Close Procedure sieht in etwa so aus :

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if fehler=false then
begin // Was geändert und nicht gespeichert ?
  if changed=true then
  begin
   if MessageDlg('Die Einstellungen wurden geändert ! Übernehmen ?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then
    begin
    speichern(Form1);
    end; //if changed true
  end;
end;


Wenn ich also in der Form.create die Variable "fehler" auf true gesetzt habe, sollte sich das Programm eigentlich schliessen ... Aber es macht dann trotzdem bei Create weiter ...

Also wie im Code schon gesagt, an der Betreffenden Zeile funzt es mit application.terminate ... Allerdings muss bei meinem Code ja irgendein Fehler sein ...

_________________
Es gibt keine dummen Fragen ... Nur blöde Antworten !!!
LCS
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 1305
Erhaltene Danke: 1

WIN 7, WIN 8
Delphi XE5, Delphi XE, Delphi 2007
BeitragVerfasst: Mo 16.09.02 10:03 
Hi
eigentlich enthält dein Code keinen Fehler. Das einzige was du nicht berücksichtigt hast: Close lässt sich frühestens im OnActivate Ereignis auslösen. Du musst das nur ein bisschen umstellen. So etwa:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
procedure TForm1.FormCreate(Sender: TObject); 
begin 
  bFirstRun := True;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  if bFirstRun then begin
    bFirstRun := False;
    //Deine Prüfungen
    if  Fehler then
      Close;
  end;
end;


Gruss Lothar

_________________
Der BH ist für die Brust, der Plan ist für'n Ar...
wwerner
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 185



BeitragVerfasst: Mo 16.09.02 10:44 
Oder du machst die Test in der DPR-Datei

_________________
Gruß

Wolfgang

----------
zu hause ist es doch am schönsten