AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Problem mit mehreren Forms und ShowModal

Ein Thema von jfheins · begonnen am 29. Aug 2004 · letzter Beitrag vom 30. Aug 2004
Antwort Antwort
Seite 1 von 2  1 2      
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, 17: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
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#2

Re: Problem mit mehreren Forms und ShowModal

  Alt 29. Aug 2004, 17:41
Ein Teil deindes Codes:

Delphi-Quellcode:
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;
Du löst hier Refresh im OnShow-Event des Forms auf, vielleicht wäre eine bessere Codeformatierung und eine bessere Bezeichnerauswahl angebracht

Wieso sleepst du eigentlich?
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Problem mit mehreren Forms und ShowModal

  Alt 29. Aug 2004, 17:47
Zitat von mytar:
vielleicht wäre eine bessere Codeformatierung und eine bessere Bezeichnerauswahl angebracht
Möchtest du mal den Code sehen, bevor ich das alles in eine prozedur gepackt habe ???

Zitat von mytar:
Wieso sleepst du eigentlich?
Weil ich dem Benutzer mit wenig programmiertechnischen aufwand die Möglichkeit geben möchte, zu sehen, was passiert.
Sonst würde das Ergebnis erscheinen und Millisekunden später schon wieder weg sein ...
  Mit Zitat antworten Zitat
mytar

Registriert seit: 30. Mai 2004
Ort: Zermatt
411 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: Problem mit mehreren Forms und ShowModal

  Alt 29. Aug 2004, 17:51
Jetzt ist mir klar!

Deine Prozedur Refresh wird mit dem OnShow-Event aufgerufen.

Aber hier:

einmal machst du:
Delphi-Quellcode:
sleep (1000);
Application.ProcessMessages;
und ein anderes mal:
Delphi-Quellcode:
Application.ProcessMessages;
sleep (1000);
Francis Obikwelu
greetz
mytar
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Problem mit mehreren Forms und ShowModal

  Alt 29. Aug 2004, 18:15
Zitat von mytar:
einmal machst du:
Delphi-Quellcode:
sleep (1000);
Application.ProcessMessages;
und ein anderes mal:
Delphi-Quellcode:
Application.ProcessMessages;
sleep (1000);
Ist das schlimm ???
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.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Problem mit mehreren Forms und ShowModal

  Alt 30. Aug 2004, 14:59
Ich pushe ja sonst nicht (*schleim*), aber das muss jetzt mal sein ...
Hat keiner mehr eine Idee ???
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#7

Re: Problem mit mehreren Forms und ShowModal

  Alt 30. Aug 2004, 15:02
nee. so direkt nicht. aber lass mal das verändern des formstyles weg.
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Problem mit mehreren Forms und ShowModal

  Alt 30. Aug 2004, 15:03
Also was mir als erstes in sAuge springt ist die Tatsache, dass du den Delphi-Referenz durchsuchenFormStyle zur Laufzeit änderst. In meiner Delphi Hilfe steht dazu:
Zitat:
Note: It is not advisable to change FormStyle at runtime.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

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

Re: Problem mit mehreren Forms und ShowModal

  Alt 30. Aug 2004, 15:10
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.
  Mit Zitat antworten Zitat
Benutzerbild von Leuselator
Leuselator

Registriert seit: 18. Mär 2003
Ort: Berlin
589 Beiträge
 
Delphi 8 Architect
 
#10

Re: Problem mit mehreren Forms und ShowModal

  Alt 30. Aug 2004, 15:13
Lass den ganzen FormStyle-, Sleep- und App.ProcessMess-Scheiss weg und guck dir den Anhang zu meinem letzten Post in diesem Thread an - das sollte Dein Problem lösen.
Gruß
Tim Leuschner
Programmierer = moderner Sysiphos: stets wenn er meint, den Stein seiner Dummheit auf den Berg des Wissens gewuchtet zu haben, erblickt er einen völlig neuen Aspekt und der Dummfels poltert mit Getöse zurück ins Tal der Unwissenheit...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 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