Einzelnen Beitrag anzeigen

Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#1

Problem mit mehreren Forms und ShowModal

  Alt 29. Aug 2004, 16:32
Ich habe ein Hauptformular (Form1).
Daraus wird per ShowModal ein zweites Formular geöffnet.
Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.FormStyle := fsNormal;
Form2.FormStyle := fsStayOnTop;
Form2.ShowModal;
Form2.FormStyle := fsNormal;
Form1.FormStyle := fsStayOnTop;
refreshed;
end;
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.

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.
  Mit Zitat antworten Zitat