Problem mit Timer
-
hey
hab ein problem mit nem timer, eine funktion macht den timer an und der timer stellt sich irgendwann alleine aus, nun will ich jedoch, dass die funktion solange wartet(den programmablauf stoppt), bis der timer wieder aus ist..
hier mal ein bissl quellcode:float x=0; float y=0; TShape * MoveShape=NULL; TLabel * MoveLabel=NULL; void moveShape(TShape *& Shape, TLabel *& Label, int xTarget, int yTarget, TTimer * Timer1) { x=(xTarget - Shape->Left)/10; y=(yTarget - Shape->Top)/10; MoveShape=Shape; MoveLabel=Label; Timer1->Enabled=1; while (Timer1->Enabled==1) ; //funktioniert nicht! }
hier die timer funktion:
void __fastcall TForm1::Timer1Timer(TObject *Sender) { if (zaehler<=8 && MoveShape!=NULL && MoveLabel!=NULL) { bemerkung->Caption=zaehler; MoveShape->Top=MoveShape->Top+y; MoveShape->Left=MoveShape->Left+x; MoveLabel->Top=MoveShape->Top+3; MoveLabel->Left=MoveShape->Left+7; } else {MoveShape=NULL; MoveLabel=NULL; x=0; y=0; Timer1->Enabled=0; Timer1->Tag=0; zaehler=0; } zaehler++; }
hoffe ihr könnt mir nen ratschlag geben
mfg mischka
-
Was genau funktioniert denn nicht? Die While-Schleife läuft wohl unendlich lange?
Setz in die Schleife mal noch Folgendes ein:
while (Timer1->Enabled) Application->ProcessMessages();
Das Programm wird ja durch deine Schleife blockiert. Durch ProcessMessages() zwingst du es aber, alle angefallenen Messages abzuarbeiten. Ist nun nicht unbedingt die sauberste Lösung, aber für deinen Fall die schnellste
-
boar krass! es funzt super! DANKE vielmals!
*strahl*