Autor Beitrag
M. Raab
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: Sa 08.02.03 15:50 
Hallo NG,

folgendes Problem:

Ich habe eine Anwendung (Form1) laufen und starte dann in einem separaten Fenster eine OPenGL Anwendung (FORM2). Da der Start des FORM2s je nach PC und Datenumfang etwas dauern kann, möchte ich ein 'bitte warten...' einblenden. Zunächst habe ich es mit einem FORM3 versucht, welches kurz vorher aufgerufen wird. Auf dem Form3 habe ich ein Label mit dem entsprchenen Text. Problem nun: Form3 erscheint zwar, nicht aber das Label mit dem Text. Das ganze sieht so aus:

ausblenden Quelltext
1:
2:
3:
4:
5:
...
form1.enabled:=false;
form3.show;
form3.label1.caption:='bitte warten...';
form2.show;


Mit dem Form2 show wird OPenGl initialisiert und die Datenverarbeitung gestartet. Wenn das abgelaufen ist und die Szene erscheint, schließe ich das Form3 wieder. Das Form3 erscheint zwar, nicht aber das LABEL.

Kann jemand helfen ?

Gruss

Markus
Killi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 299

Win*
D6 Prof
BeitragVerfasst: Sa 08.02.03 16:08 
Sicher, dass das Label nicht überdeckt wird vom Form3? Oder ist Form3 invisible? Naja - versuch doch mal Ohne eine Zuweisung auf das Label dein Ziel zu erreichen - setz in Form2 einfach mal ein Label MIT dem Text, lösche dein "Label1.Caption:= blubber" und schau, was dann passiert!
Würde mich mal interessieren
Cashels
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 167



BeitragVerfasst: Sa 08.02.03 16:09 
Hi,

füg mal nach dem Anzeigen von Form3 ein application.processmessages ein, oder ein form3.refresh.

Gruß,
Tom
M. Raab Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 334
Erhaltene Danke: 1

WIN 7
Delphi XE
BeitragVerfasst: So 09.02.03 12:41 
Hallo NG,


nix zu machen .... wenn ich das FORM3 nicht schließe sondern einfach stehen lassen und dann das FORM2 schließe, bleibt das FORM2 stehen und es erscheint auch sauber das 'bitte warten....'. Ich habe dann einfach mal dem LABEL fest einen Text zugewiesen, also:

ausblenden Quelltext
1:
2:
3:
form1.enabled:=false; 
form3.show; 
form2.show;


Ich habe -als ich das FORM3 mit dem Objektinspektor gemacht habe, dem LABEL bereits einen Text gegeben - gleicher Effekt. Schreibe ich das "bitte warten" in den Caption vom FORM3, erscheint das auch. Irgendwie überlagert die ABarbeitung des FORM2.SHOW das Anzeigen des Labels zeitlich - erst wenn form2.show fertig ist, erscheint auch der LABELTEXT.

Gruss


Markus
Wolff68
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 302
Erhaltene Danke: 1

WinXP home
D6 Prof
BeitragVerfasst: So 09.02.03 18:53 
Also folgende Reihenfolge funkioniert bei mir
(Wobei Form1 = Hauptprogramm, Form2 = "bitte warten" Form3 = zweite Form)

ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
procedure TForm1.Button1Click(Sender: TObject);
begin
  form1.enabled:=false;
  form2.label1.caption:='bitte warten...';
  form2.show;
  Application.ProcessMessages;
  form3.show;
end;

procedure TForm3.FormShow(Sender: TObject);
begin
  Sleep(2000);
  Form2.Hide;
end;

procedure TForm3.Button1Click(Sender: TObject);
begin
 Close;
 Form1.Enabled := true;
end;


Wobei mir nicht ganz klar ist, warum Du Form1.Enabled veränderst anstatt einfach Form3.ShowModal zu verwenden.

_________________
"Der Mensch ist nicht was er sich vorstellt oder wünscht zu sein, sondern das was andere in ihm sehen."