Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.163 Beiträge
 
Delphi 12 Athens
 
#3

AW: Timer einmalig sofort auslösen.

  Alt 1. Aug 2012, 21:23
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu ( 1. Aug 2012 um 21:52 Uhr)
  Mit Zitat antworten Zitat