Einzelnen Beitrag anzeigen

delphinub23

Registriert seit: 27. Okt 2010
Ort: Chemnitz
110 Beiträge
 
Delphi XE3 Professional
 
#1

SystemMenu Problem

  Alt 5. Aug 2011, 11:53
Hallo DPler,

ich möchte während einer Ladeprozedur das Schließen meines Formulares unterbinden.
Im OnClose-Event des Formulars wird die CanClose Variable auf den korrekten Zustand gesetzt.
Somit lässt sich die Form auch nicht schließen.

Schön und gut, wenn da nicht folgendes Problem wäre:
Das "X" Item im SystemMenu soll während des Ladens ausgegraut sein und sich danach wieder aktivieren.

Das Ausgrauen funktioniert, nur das reaktivieren nicht.
Warum?

Delphi-Quellcode:
procedure TFormMain.SuperFormCloseQuery(Sender: TObject;
  var CanClose: Boolean);
begin
  CanClose := FApplicationCanClose;
end;
Delphi-Quellcode:
procedure TFormMain.ActionItemFileOpenExecute(Sender: TObject);
begin
  SetCanCloseApplication(FALSE);

  {HIER IST DER CODE DES LADEVORGANGS}
  {...}
  {...}


  SetCanCloseApplication(TRUE);
end;
Delphi-Quellcode:
procedure TFormMain.SetCanCloseApplication(const AValue: Boolean);
var
  AppMenu: THandle;
begin
  FApplicationCanClose := AValue;

  AppMenu := GetSystemMenu(Self.Handle, FALSE);

  if AppMenu <> 0 then
  begin
    if FApplicationCanClose then
      EnableMenuItem(AppMenu, SC_CLOSE, MF_BYCOMMAND)
    else
      DeleteMenu(AppMenu, SC_CLOSE, MF_BYCOMMAND);
  end;

end;


MfG,
dnub
  Mit Zitat antworten Zitat