![]() |
Close in OnActivate eines modalen fensters hat keine Wirkung
Ich habe folgenden Code:
Delphi-Quellcode:
procedure TForm1.FormActivate(Sender: TObject);
begin if bFirstTime then Form2.ShowModal; end; procedure TForm1.FormCreate(Sender: TObject); begin bFirstTime := True; end;
Delphi-Quellcode:
Ich denke, es ist klar was der Code soll. Nur hat er einen Haken. Das Close in Form2 hat keinerlei Wirkung. Ich frage mich warum und wie man das Fenster automatisch wieder zu bekommt. Ein
procedure TForm2.FormActivate(Sender: TObject);
var Loop: Integer; begin if bFirstTime then begin for Loop := 0 to 9 do begin Caption := IntToStr(Loop); Sleep(150); end; Close; end; bFirstTime := False; end; procedure TForm2.FormCreate(Sender: TObject); begin bFirstTime := True; end;
Delphi-Quellcode:
an dieser Stelle zeigte auch keine Wirkung.
ModalResult := mrOK;
|
Re: Close in OnActivate eines modalen fensters hat keine Wir
Hai Luckie,
kann es sein das dein bFirstTime := False; nie ausgeführt wird weil Du ja davor das Fenster schließt? Dadruch wird es dann im .FormActivate des ersten Fensters sofort wieder anzezeigt. Ist aber nur eine Vermutung. |
Re: Close in OnActivate eines modalen fensters hat keine Wir
in form2
soll alle bFirstTime form1.bFirstTime heissen? oder umgekehrt .. |
Re: Close in OnActivate eines modalen fensters hat keine Wir
Nein, das stimmt schon, sonst wird ja die Schleife jedes mal von Form2 abgerabeitet, wenn es aktiviert wird. Und ob das in Form1 stimmt, ist erstmal nebensächlich. Es geht nur um das Close in Form2 in OnActivate.
|
Re: Close in OnActivate eines modalen fensters hat keine Wir
Hi Luckie,
das close-Ereignis ist bei onActivate glaub ich nicht erlaubt, da noch andere Routinen abgearbeitet werden. Haue das close einfach bei onPaint rein, dann müsste sich das Fenster schließen und den gleichen Effekt haben (kann es leider nicht ausprobieren, habe kein Delphi hier). Tschüß Markus |
Re: Close in OnActivate eines modalen fensters hat keine Wir
OnPaint? :gruebel: Ob das aber so das ware ist....
|
Re: Close in OnActivate eines modalen fensters hat keine Wir
Nein, im OnActivate geht es schon.
OnPaint kannste ja vergessen, denn OnPaint wird ja fast durchgehend aufgerufen. ;) |
Re: Close in OnActivate eines modalen fensters hat keine Wir
Zitat:
|
Re: Close in OnActivate eines modalen fensters hat keine Wir
Komisch, dein Beispiel geht bei mir auch nicht. :?
Wenn man nur eine Form nimmt (Form1) und dort ins OnActivate Close schreibt, dann wird's ausgeführt. Ich hab deinen Code mal überprüft, nach dem Hochzählen ist bFirstTime immer noch true. :gruebel: :wall: achja, gehört ja so. |
Re: Close in OnActivate eines modalen fensters hat keine Wir
Dass das close-Ereignis bei Luckie Code nicht ausgeführt wird liegt glaub ich daran, dass er ShowModal verwendet. Hatte das damals mit onPaint gelöst da ich ein Fenster nur kurz anzeigen lassen wollte. Hatte seinen Zweck auch erfüllt.
Man könnte auch das Problem auch lösen, in dem man die Form nicht mit ShowModal anzeigt(Form1.enabled:=false, Form2.FormStyle:=fsStayOnTop). Tschüß Markus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:10 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