AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Timer einmalig sofort auslösen.

Ein Thema von xDIMAx · begonnen am 1. Aug 2012 · letzter Beitrag vom 2. Aug 2012
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz