Hallo Warp,
hierfür eignet sich die Methode
OnIdle, die zwar häufig aufgerufen wird und für CPU-Lastige Funktionalitäten nicht missbraucht werden sollte, aber in deinem Fall die optimale Lösung darstellen sollte:
Delphi-Quellcode:
//------------------------------------------------------------------------------
// OnIdle:
//------------------------------------------------------------------------------
procedure TMainForm.OnIdle(Sender: TObject; var Done: Boolean);
var b: Boolean;
begin
//geht auch kürzer
b := (Self.MDiChildCount > 0);
actnFileSave.Enabled := b;
actnFileSaveAs.Enabled := b;
actnFilePrintPreview.Enabled := b;
actnFilePrintSettings.Enabled := b;
actnEditUndo.Enabled := b;
actnEditRedo.Enabled := b;
end;
//------------------------------------------------------------------------------
// OnIdleInit: Einmal im OnCreate bzw. Konstruktur aufrufen
//------------------------------------------------------------------------------
procedure TMainForm.SetApplicationIdleProc;
var Done: Boolean;
begin
Application.OnIdle := OnIdle;
Done := True;
OnIdle(Self, Done);
end;
PS: Code ist ungetestet.
Ich bin ja quasi die perfekte Mischung aus jung, aber sehr erfahren.