Timer1Timer(nil);
und dann
if not Assigned(Sender) then
oder
if Sender = nil then
um zu prüfen, ob es "manuell" ausgelöst wurde.
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
Button1Click(nil);
// Aber wenn hier sowieso sonst nichts passiert, dann bei "OnClick" direkt das "Button1Click" angeben
end;
Aber ganz im Ernst, warum willst du auf Zwang zwei verschiedene Ereignisse dort einbauen, welche mit dem Timer eigentlich nichts zu tun haben?
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
// verfehlt ... machwas, wenn danebengecklickt wird
Timer1Timer(nil);
end;
procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
// getroffen ... machwas, wenn es erwischt wurde
...
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
// Zeit abgelaufen (oder danabengeklickt) ... mach was, wenn es nicht erwischt wurde
// über Assigned(Sender) kannst du unterscheiden, ob Zeit oder Klick
...
end;
Und dazu noch eine eigene "Verschiebe"-Prozedur, welche das Shape verschiebt und die von den Timer- und Klickereignissen aufgerufen wird.