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