Auf jedes Formular jetzt noch einen Timer zu packen, Events verdrahten und alles ist leider zu viel Aufwand. Bislang bin ich bei jedem Formular im OnActivate nur hingegangen und habe sage nur noch macheScreenshot('Abb. 35')
. Und die 10ms sind im Endeffekt dann auch nur geraten.
Und wenn du es einfach im übergeordneten Formular machst?
Deine ganzen Formulare hast du ja sicherlich nicht von TForm abgeleitet sondern von TGünnisUrsprungAllerDingeForm, oder?
Dann könntest du ganz bequem das machen:
Delphi-Quellcode:
procedure TGünnisUrsprungAllerDingeForm.OnTimer(Sender: TObject);
begin
if Sender is TTimer then
begin
TTimer(Sender).Enabled := False;
ShowMessage('Mache Screenshot!');
// Sender.Free; <- einkommentieren, wenn Owner vom Timer nil anstatt Self ist!
end;
end;
procedure TGünnisUrsprungAllerDingeForm.FormActivate(Sender: TObject);
var
LTimer: TTimer;
begin
LTimer := TTimer.Create(Self);
LTimer.OnTimer := OnTimer;
LTimer.Interval := 2000;
LTimer.Enabled := True;
end;
Oder alternativ das was Lemmy schrieb.