Einzelnen Beitrag anzeigen

Tubo
(Gast)

n/a Beiträge
 
#1

ShowModal -> Fenster nicht modal

  Alt 23. Feb 2007, 15:46
Hallo Community,

ich habe eine Klasse geschrieben, die ständig aktualisiert und gezeichnet werden muss. Zu Anfang hatte ich alles mit einem TTimer realisert, der Update; und Paint; der Klasse aufruft. Alles funktionierte sehr gut.
Da ich es nun mehr in OOP-Style schreiben wollte, habe ich statt des TTImers setTimeEvent in der Klasse benutzt:
Delphi-Quellcode:
procedure TimingTimerCallback(uTimerID, uMessage: UINT; dwUser, dw1, dw2: DWORD); stdcall;
begin
  if (dwUser <> 0) then
    begin
    TTimingTest(dwUser).TimerCallback(uTimerID);
    end;
end;

procedure TTimingTest.TimerCallback(TimerID: Cardinal);
begin
  if (FTimerID = TimerID) then
    begin
    Update;
    Paint;
    end;
end;

procedure TTimingTest.TimerStart(Interval: Cardinal);
begin
  FTimerID := timeSetEvent(Interval, Interval, TFNTimeCallBack(@TimingTimerCallback), LongInt(Self), TIME_PERIODIC);
end;

procedure TTimingTest.TimerKill;
begin
  if (FTimerID <> 0) then
    begin
    timeKillEvent(FTimerID);
    FTimerID := 0;
    end;
end;
Doch nun habe ich das Problem, dass das Fenster, was am Ende des Tests (wird durch ein Event an die Hauptunit signalisiert) angezeigt werden soll, nicht mehr modal ist, obwohl ShowModal aufgerufen wird:
Delphi-Quellcode:
// class method that creates, shows modal and releases the form
class procedure TMsgForm.ShowYourself(const Headline, Msg: String; const Cancel: Boolean = false);
var MsgForm: TMsgForm;
begin
  MsgForm:= TMsgForm.Create(Application, Headline, Msg, Cancel) ;
  try
    MsgForm.ShowModal;
  finally
    MsgForm.Free; //Release;
  end;
end;
Also das Fenster wird zwar angezeigt, ist aber nicht modal!
Und das nur, weil ich statt TTimer, setTimeEvent nutze...
Ich bin ratlos, und selbst der Guru Muetze1 weiß nicht weiter.
Hat jedmand eine Idee.

Danke

P.S.: Als ich statt MsgForm.Free MsgForm.Release aufgerufen habe, ist das ganze Programm stehen geblieben, also reagiere gar nicht mehr.
Schon das hat ewig gedauert festzustellen...
  Mit Zitat antworten Zitat