Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Close in OnActivate eines modalen fensters hat keine Wirkung (https://www.delphipraxis.net/18033-close-onactivate-eines-modalen-fensters-hat-keine-wirkung.html)

Luckie 13. Mär 2004 07:49


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:
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;
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
Delphi-Quellcode:
ModalResult := mrOK;
an dieser Stelle zeigte auch keine Wirkung.

Sharky 13. Mär 2004 09:26

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.

greyblue 13. Mär 2004 09:53

Re: Close in OnActivate eines modalen fensters hat keine Wir
 
in form2

soll
alle bFirstTime
form1.bFirstTime heissen?

oder umgekehrt ..

Luckie 13. Mär 2004 15:10

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.

Markus K. 13. Mär 2004 16:50

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

Luckie 13. Mär 2004 17:00

Re: Close in OnActivate eines modalen fensters hat keine Wir
 
OnPaint? :gruebel: Ob das aber so das ware ist....

Matze 13. Mär 2004 17:02

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. ;)

Luckie 13. Mär 2004 17:09

Re: Close in OnActivate eines modalen fensters hat keine Wir
 
Zitat:

Zitat von Matze
Nein, im OnActivate geht es schon.

Und wie? bei mir steht es ja da, aber es geht nicht.

Matze 13. Mär 2004 17:18

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.

Markus K. 13. Mär 2004 18:26

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