Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Überprüfung bei Programmstart (https://www.delphipraxis.net/191227-ueberpruefung-bei-programmstart.html)

ConnorMcLeod 22. Dez 2016 11:24

AW: Überprüfung bei Programmstart
 
Delphi-Quellcode:
begin
  if (not FileExists(ExtractFilePath(Application.ExeName) + 'Test.INI')) then
  begin
    //Einstellungen-Fenster öffnen, Daten selbst eintragen, Übernehmen -> Programm starten
    ShowMessage('Ini-Datei nicht gefunden. Daten im nächsten Schritt selbst eintragen.');
    TFormEinstellungen.Create(Application).Show;
  end;
end;
Edit:
und
Delphi-Quellcode:
Action := caFree;
ins OnClose von TFormEinstellungen.

a.def 22. Dez 2016 11:34

AW: Überprüfung bei Programmstart
 
Zitat:

Zitat von H.Bothur (Beitrag 1356957)
mache so etwas so:

Delphi-Quellcode:
Var:
  ProgrammGestartet: Boolean;

im OnCreate:
  ProgrammGestartet := False;

im OnShow:
  if not ProgrammGestartet then
  begin
    PrüfeObIniDatei
    if NotIniDatei
    begin
      Abfragen
    end;
  end;
Und ja - das geht bestimmt besser und eleganter, aber ich programmiere immer noch in Delphi 6.0

Hans

Ich würde eher eine Kombination aus WMFormVisible und Paint nehmen.
http://www.delphipraxis.net/190560-f...-zu-sehen.html

Freyr77 22. Dez 2016 12:26

AW: Überprüfung bei Programmstart
 
Zitat:

Zitat von ConnorMcLeod (Beitrag 1356964)
Delphi-Quellcode:
begin
  if (not FileExists(ExtractFilePath(Application.ExeName) + 'Test.INI')) then
  begin
    //Einstellungen-Fenster öffnen, Daten selbst eintragen, Übernehmen -> Programm starten
    ShowMessage('Ini-Datei nicht gefunden. Daten im nächsten Schritt selbst eintragen.');
    TFormEinstellungen.Create(Application).Show;
  end;
end;
Edit:
und
Delphi-Quellcode:
Action := caFree;
ins OnClose von TFormEinstellungen.

Es kracht immer wenn ich versuche die Einstellungen Form zu öffnen. Selbst wenn ich sie vorher "Create". Ich verstehs nicht.

ConnorMcLeod 22. Dez 2016 12:38

AW: Überprüfung bei Programmstart
 
Zeig mal, wie Du es machst.
Und die Krachermeldung.

nahpets 22. Dez 2016 12:47

AW: Überprüfung bei Programmstart
 
1. Verlege die Prüfung aus dem Create in eine eigene Methode des Formulars (z. B. TForm1.CheckIni)
2. Füge vor der Zeile Application.Run die Prüfung in die dpr ein.

Z. B.:
Delphi-Quellcode:
if Form1.CheckIni then Application.Run;
Ist der Rückgabewert von CheckIni <> true, wird das Programm nicht gestartet.

CheckIni könnte so in der Art aussehen:
Delphi-Quellcode:
function TForm1.CheckIni : Boolean;
begin
  if not FileExists(ChangeFileExt(Application.ExeName,'.ini')) then
  begin
    // Du musst hier dafür sorgen, dass das Einstellungsformular auch einen passenden Rückgabewert hat.
    // Buttons haben dafür z. B. die Eigenschaft ModalResult.
    Result := FormEinstellungen.ShowModal = mrOK;
  end;
end;

Freyr77 22. Dez 2016 13:00

AW: Überprüfung bei Programmstart
 
Delphi-Quellcode:
Result := TFormSettings.ShowModal = mrOk;
Hier kracht er wieder bei mir.

Im dpr sieht das jetzt so aus:

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Application';
  Application.CreateForm(TApplication, Application);
  Application.Create;

  if Application.CheckIni then
  Application.Run;
end.

DeddyH 22. Dez 2016 13:15

AW: Überprüfung bei Programmstart
 
Heißt Dein Hauptformular Application? Das ist sehr ungünstig.

a.def 22. Dez 2016 13:17

AW: Überprüfung bei Programmstart
 
Außerdem würde ich das CheckIni nicht in TForm1 legen sondern diese Funktion direkt in die DPR-Datei schreiben und noch VOR Application.Initialize; aufrufen.

Delphi-Quellcode:
function CheckIni : Boolean;
begin
  Result := FileExists(ChangeFileExt(Application.ExeName,'.ini'));
end;

begin
  if not CheckIni then
   begin
    showmessage('Ini-Datei nicht vorhanden ...');
    Halt(1);
   end;

  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.Title := 'Application';
  Application.CreateForm(TApplication, Application);
  Application.Create;
  Application.Run;
end.

Freyr77 22. Dez 2016 13:17

AW: Überprüfung bei Programmstart
 
Zitat:

Zitat von DeddyH (Beitrag 1356990)
Heißt Dein Hauptformular Application? Das ist sehr ungünstig.

Nein. Ich ändere nur eindeutige Namen ab bevor ich den Code hier poste ;)

DeddyH 22. Dez 2016 13:19

AW: Überprüfung bei Programmstart
 
Was soll den die Zeile "Application.Create" bewirken?


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr.
Seite 2 von 3     12 3      

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