Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Info-Fenster nachträglich vor Programm anzeigen (https://www.delphipraxis.net/194177-info-fenster-nachtraeglich-vor-programm-anzeigen.html)

IwasNix 25. Okt 2017 13:18

Info-Fenster nachträglich vor Programm anzeigen
 
Ein herzliches Servus, ich komme einfach nicht weiter :(

Ich möchte ein bestehendes Programm um ein Info-Fenster (frmInfo) ergänzen.
Dieses soll bei Programmstart angezeigt werden.

Auch wenn ich in Projekt/Optionen/Formulare als Hauptformular frmInfo auswähle, so erscheint trotzdem frmStart als erstes und frmInfo liegt hinter dem frmStart.

Wenn ich frmStart als Hauptfenster lasse und in frmStart versuche mit frmInfo.ShowModal(); in FormActivate anzuzeigen bekomme ich die Fehlermeldung :Zugriffsverletzung bei Adresse 01206A82 in ...

Aufgabe:
Vor dem bestehenden Programm sollen nun einige Informationen wie z.B. Anzahl offener Rechnungen angezeigt werden und erst nach Bestätigung mit dem Button-OK im Info-Fenster soll das eigentliche Programm verwendet werden können.

Für jede Info bin ich euch dankbar
LG Roman

yogie 25. Okt 2017 13:35

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Hallo,
wenn ich Dich richtig verstehe, soll das Fenster vor der eigentlichen
Main-Form angezeigt werden. Dazu muß die Projektdatei *.dpr bearbeitet werden.
Nur als Anregung:
Code:
uses
  Forms,
  sysutils,
  xxxMain in 'xxxMain.pas' {frmMain},
  ... usw
{$R *.res}

begin
  frmIntro:=TfrmIntro.Create(Application);
  frmIntro.Show;
  frmIntro.Update;
  sleep(1000);

  Application.Initialize;

  Application.CreateForm(TfrmMain, frmMain);
  ... usw

  frmIntro.Close;
  frmIntro.Release;

  Application.Run;
end.
sleep ist da natürlich nicht wirklich gut, sorgt aber dafür, daß frmIntro wenigstens
eine Sekunde zu shen ist.

IwasNix 25. Okt 2017 13:58

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Super ....
Funktioniert, ich habe nur noch Show in ShowModal geändert und sleep(1000) entfernt.

Jetzt wird das Info-Fenster solange angezeigt bis der OK-Button gedrückt wird. ( frmInfo.CloseModal; )

Erst dann wird das 'eigentliche Programm' ausgeführt - echt super!

:thumb: Danke für die rasche Hilfe :thumb:

yogie 25. Okt 2017 14:00

AW: Info-Fenster nachträglich vor Programm anzeigen
 
... freut mich, das war die gute Tat für heute

bcvs 25. Okt 2017 14:31

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Zitat:

Zitat von IwasNix (Beitrag 1384118)
Wenn ich frmStart als Hauptfenster lasse und in frmStart versuche mit frmInfo.ShowModal(); in FormActivate anzuzeigen bekomme ich die Fehlermeldung :Zugriffsverletzung bei Adresse 01206A82 in ...

Das muss aber funktionieren. Mache ich ständig so.
Wo erzeugst du denn dein frmInfo. Wenn du es automatisch erzeugen lässt, ist es an dieser Stelle möglicherweise noch nicht vorhanden. Also besser manuell erzeugen, wenn es gebraucht wird.

Also im FormActivate vom frmStart:

Delphi-Quellcode:
  frmIntro:=TfrmIntro.Create(nil);
  try
    frmIntro.Show;
  finally
    frmInfo.Free;
  end;
Und dann noch mit einem Flag dafür sorgen, dass dieser Code nur beim ersten FormActivate nach dem Programmstart ausgeführt wird. Ich finde das eleganter als den Weg über die .dpr, weil man dann alles zusammen hat.

Aviator 25. Okt 2017 14:33

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Zitat:

Zitat von bcvs (Beitrag 1384127)
Zitat:

Zitat von IwasNix (Beitrag 1384118)
Wenn ich frmStart als Hauptfenster lasse und in frmStart versuche mit frmInfo.ShowModal(); in FormActivate anzuzeigen bekomme ich die Fehlermeldung :Zugriffsverletzung bei Adresse 01206A82 in ...

Das muss aber funktionieren. Mache ich ständig so.
Wo erzeugst du denn dein frmInfo. Wenn du es automatisch erzeugen lässt, ist es an dieser Stelle möglicherweise noch nicht vorhanden. Also besser manuell erzeugen, wenn es gebraucht wird.

Also im FormActivate vom frmStart:

Delphi-Quellcode:
  frmIntro:=TfrmIntro.Create(nil);
  try
    frmIntro.Show;
  finally
    frmInfo.Free;
  end;

Wenn du das so machst wie in deinem Beispiel dann bezweifle ich stark, dass du überhaupt etwas siehst. Wenn überhaupt, dann nur ein kleines Aufblitzen des Fensters. :roll:

Glados 25. Okt 2017 15:23

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Wenn überhaupt dann so

Delphi-Quellcode:
 frmIntro:=TfrmIntro.Create(nil);
  try
    frmIntro.ShowModal; // MODAL!
  finally
    frmInfo.Free;
  end;

bcvs 25. Okt 2017 16:54

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Ja, ja, ist ja gut.

Ich meinte natürlich ShowModal

Uwe Raabe 25. Okt 2017 17:30

AW: Info-Fenster nachträglich vor Programm anzeigen
 
Könnte man auch etwas kompakter so erledigen:

Delphi-Quellcode:
begin
  Application.Initialize;
  Application.MainFormOnTaskbar := True;
  Application.CreateForm(TfrmMain, frmMain);
  Application.CreateForm(TfrmIntro, frmIntro);
  // eventuell noch weitere Forms erstellen
  frmIntro.ShowModal;
  Application.Run;
end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:09 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