![]() |
Problem mit mehreren Forms und ShowModal
Ich habe ein Hauptformular (Form1).
Daraus wird per ShowModal ein zweites Formular geöffnet.
Delphi-Quellcode:
Wenn man auf den Button klickt, Sieht Form1 erstmal ganz komisch aus, (Graue Fläche, alle "Sachen" als weiße Löcher) und nach einiger Zeit (=nach dem alles ausgeführt wurde) wird Form2 angezeigt, es schließt sich jedoch nicht.
procedure TForm1.Button2Click(Sender: TObject);
begin Form1.FormStyle := fsNormal; Form2.FormStyle := fsStayOnTop; Form2.ShowModal; Form2.FormStyle := fsNormal; Form1.FormStyle := fsStayOnTop; refreshed; end; Hier der Quellcode für Form2:
Delphi-Quellcode:
unit Unit2;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Inifiles, StrUtils, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP, ComCtrls, ExtCtrls; type TForm2 = class(TForm) IdHTTP1: TIdHTTP; ProgressBar1: TProgressBar; Label1: TLabel; procedure FormCreate(Sender: TObject); procedure refresh; procedure FormShow(Sender: TObject); private { Private-Deklarationen } public { Public-Deklarationen } end; var Form2: TForm2; nach: array[0..8] of string; implementation uses Unit1; {$R *.dfm} procedure TForm2.refresh; const vfehler = 'Es trat ein Fehler bei der Internetverbindung auf !'; sfehler = 'Es trat ein Fehler bei der Speicherung der Wechselkurse auf !'; var Ini: TIniFile; quell: array[0..7] of string; z: integer; fehler: string; begin Progressbar1.Position := 0; Label1.Caption := 'Aktualisierung läuft ...'; Label1.Font.Color := clNavy; sleep (1000); Application.ProcessMessages; try // viele Anweisungen, Falls etwas schief geht steht eine Beschreibung des Fehlers in Fehler Label1.Caption := 'Erfolgreich Aktualisiert'; Label1.Font.Color := clGreen; except showmessage (fehler); Label1.Caption := 'Es sind Fehler aufgetreten !'; Label1.Font.Color := clRed; end; Application.ProcessMessages; sleep (1000); Form2.Close; end; procedure TForm2.FormCreate(Sender: TObject); begin nach[0] := 'USD'; nach[1] := 'GBP'; nach[2] := 'CHF'; nach[3] := 'NOK'; nach[4] := 'DKK'; nach[5] := 'SEK'; nach[6] := 'JPY'; nach[7] := 'XAU'; end; procedure TForm2.FormShow(Sender: TObject); begin refresh; end; end. |
Re: Problem mit mehreren Forms und ShowModal
Ein Teil deindes Codes:
Delphi-Quellcode:
Du löst hier Refresh im OnShow-Event des Forms auf, vielleicht wäre eine bessere Codeformatierung und eine bessere Bezeichnerauswahl angebracht :-D
procedure TForm2.refresh;
const vfehler = 'Es trat ein Fehler bei der Internetverbindung auf !'; sfehler = 'Es trat ein Fehler bei der Speicherung der Wechselkurse auf !'; var Ini: TIniFile; quell: array[0..7] of string; z: integer; fehler: string; begin Progressbar1.Position := 0; Label1.Caption := 'Aktualisierung läuft ...'; Label1.Font.Color := clNavy; sleep (1000); Application.ProcessMessages; try // viele Anweisungen, Falls etwas schief geht steht eine Beschreibung des Fehlers in Fehler Label1.Caption := 'Erfolgreich Aktualisiert'; Label1.Font.Color := clGreen; except showmessage (fehler); Label1.Caption := 'Es sind Fehler aufgetreten !'; Label1.Font.Color := clRed; end; Application.ProcessMessages; sleep (1000); Form2.Close; end; procedure TForm2.FormCreate(Sender: TObject); begin nach[0] := 'USD'; nach[1] := 'GBP'; nach[2] := 'CHF'; nach[3] := 'NOK'; nach[4] := 'DKK'; nach[5] := 'SEK'; nach[6] := 'JPY'; nach[7] := 'XAU'; end; procedure TForm2.FormShow(Sender: TObject); begin refresh; end; Wieso sleepst du eigentlich? |
Re: Problem mit mehreren Forms und ShowModal
Zitat:
Zitat:
Sonst würde das Ergebnis erscheinen und Millisekunden später schon wieder weg sein ... |
Re: Problem mit mehreren Forms und ShowModal
Jetzt ist mir klar!
Deine Prozedur Refresh wird mit dem OnShow-Event aufgerufen. Aber hier: einmal machst du:
Delphi-Quellcode:
und ein anderes mal:
sleep (1000);
Application.ProcessMessages;
Delphi-Quellcode:
Application.ProcessMessages;
sleep (1000); |
Re: Problem mit mehreren Forms und ShowModal
Zitat:
Das eine mal möchte ich, dass er schläft, alles was passiert ist aufarbeitet, und dann weitermacht. Das andere mal, dass er zum Schluss noch mal alles abarbeitet, und sich dann nach einer sekunde schließt. |
Re: Problem mit mehreren Forms und ShowModal
Ich pushe ja sonst nicht (*schleim*), aber das muss jetzt mal sein ...
Hat keiner mehr eine Idee ??? |
Re: Problem mit mehreren Forms und ShowModal
nee. so direkt nicht. aber lass mal das verändern des formstyles weg.
|
Re: Problem mit mehreren Forms und ShowModal
Also was mir als erstes in sAuge springt ist die Tatsache, dass du den
![]() Zitat:
|
Re: Problem mit mehreren Forms und ShowModal
Wenn ich das FormStyle weglasse, bleibt Form1, wie es ist, aber Form2 erscheint erst, wenn es fertig ist, ausserdem, schließt es sich immernoch nicht.
|
Re: Problem mit mehreren Forms und ShowModal
Lass den ganzen FormStyle-, Sleep- und App.ProcessMess-Scheiss weg und guck dir den Anhang zu meinem letzten Post
![]() Gruß |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:32 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-2025 by Thomas Breitkreuz