Einzelnen Beitrag anzeigen

xDIMAx

Registriert seit: 4. Feb 2012
5 Beiträge
 
#4

AW: Timer einmalig sofort auslösen.

  Alt 2. Aug 2012, 07:31
Also bei der, von jfheins genannten, Lösung kommt es scheinbar zu der von mir angesprochenen Dopplung, bei der der Timer einmal manuell und kurz darauf nochmal durch den Intervall ausgelöst wird.

Und bei der, von himitsu genannten, blick ich nicht wirklich durch:

Der Vorschlag funktioniert gut:
Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
  // verfehlt ... machwas, wenn danebengecklickt wird
  Timer1Timer(nil);
end;
Aber deine erste Zeile verstehe ich nicht so wirklich.
Timer1Timer(nil); und dann if not Assigned(Sender) then oder if Sender = nil then um zu prüfen, ob es "manuell" ausgelöst wurde.

Ich denke in der geht es genau um mein Problem, aber bin in Delphi noch Anfänger.
Ich probiere erst einmal ein bisschen rum und gucke ob ich nicht irgendwie dahinterkomme. ^^

EDIT: Also ich habe wirklich keine Ahnung. Alles, was ich versuche führt zu mehr Problemen. Man kann unabhängig von Start/Stop, das Spiel verlieren, gewinnen, alles anklicken. Ich weiß wirklich nicht weiter.

EDIT2:

Also ich habe es nun Folgendermaßen gemacht:

Delphi-Quellcode:
procedure TForm1.FormClick(Sender: TObject);
begin
  H:=1;
  Timer1Timer(nil);
end;

procedure TForm1.Shape1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
  G:=0;
  Timer1Timer(nil);
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  if F=1 then //Eine weitere Random-Variable. ^^ Sorry, ich ersetze die später.
    begin
      F:=0;
      Exit;
    end;
  if Sender=nil then
    begin
      F:=1;
    end;
  if (G=0) and (H=0) then
    begin
      G:=1;
      H:=0;
      Shape1.Left:=trunc(random*(Form1.Width-64))+16;
      Shape1.Top:=trunc(random*(Form1.Height-64))+64;
    end
  else
    begin
      Button1Click(Self);
    end;
end;
Es funktioniert.... Danke.

Wenn ihr eine Idee habt, wie ich das besser hinkriegen könnte, könnt ihr weiter Vorschläge machen. ^^

Geändert von xDIMAx ( 2. Aug 2012 um 09:29 Uhr)
  Mit Zitat antworten Zitat