Toon posts:

[c builder] startknop timer laten aansturen.

Pagina: 1
Acties:
  • 71 views sinds 30-01-2008

Verwijderd

Topicstarter
dag, mijn probleem is als volgt.
ik ben bezig met een programma wat een lopende band simuleert.
elke keer komt er dus een object op de band waarnaar deze goed of afgekeurd wordt.
maar goed, dit object komt dus automatisch op de lopende band.
Maar wat ik wil is dat d.m.v. een start /stop knop dit object start / stopt (logisch toch?).
D.m.v. een timer wordt dit object in beweging gebracht.
Ik had al gekeken bij de objecten start en stop de koppelen aan de timer maar dat werkt niet...

als jullie meer info willen hebben moeten jullie het maar zeggen. ;)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 06-09 14:04

Creepy

Tactical Espionage Splatterer

Eehh.. een TTimer bedoel je?

Een ttimer kan je aan/uitzetten d.m.v. de enabled property

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Ik vind het maar een vaag topic en ik weet al helemaal niet wat uw probleem is.
Dus: wat wil je, wat is het probleem, wat werkt er niet?

https://fgheysels.github.io/


Verwijderd

Topicstarter
sorry als ik misschien onduidelijk ben...
mijn bedoeling is dus het object te kunnen laten stoppen of juist weer te laten starten.

bv.

functie ttimer
if start is ingedrukt
doe zolang stop niet is ingedrukt
object op lopende band
if stop is ingedrukt
doe zolang start niet is ingedrukt
object staat stil

snappie

neem deze code niet al te serieus... :P

zo beter

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Niet moeilijk toch?
code:
1
2
3
4
5
6
7
8
9
StartButtonOnClick(TObject* Sender)
{
  Timer->Enabled = true;
}

StopButtonOnClick(TObject* Sender)
{
  Timer->Enabled = false;
}

En in de OnTimer event van de timer plaats je code om het object te doen bewegen. Simple comme bonjour.

https://fgheysels.github.io/


Verwijderd

Topicstarter
het lukt toch niet.
ik heb het volgende gedaan...
code:
1
2
3
4
5
6
7
8
StartButtonOnClick(TObject* Sender)
{
 TTimer1->Enabled=true;
}
StopButtonOnClick(TObject* Sender)
{
  TTimer1->Enabled=false;
}

Hij geeft dan een fout aan tussen -> en Enabled
o.a. de volgende
code:
1
2
-undefined symbol 'TTimer1' (heb alle mogelijk opties al geprobeerd)
-Function should return a value

Verwijderd

Op donderdag 06 juni 2002 20:35 schreef BIZO het volgende:
het lukt toch niet.
ik heb het volgende gedaan...
code:
1
2
3
4
5
6
7
8
StartButtonOnClick(TObject* Sender)
{
 TTimer1->Enabled=true;
}
StopButtonOnClick(TObject* Sender)
{
  TTimer1->Enabled=false;
}

Hij geeft dan een fout aan tussen -> en Enabled
o.a. de volgende
code:
1
2
-undefined symbol 'TTimer1' 
-Function should return a value
De naam van je timer klopt niet.

Als je de naam niet verandert hebt is het standaard Timer1. Anders moet je je eigen naam invoeren ipv TTimer1.

Verwijderd

Topicstarter
ik heb nu de code helemaal veranderd
dit stukje staat buiten de timer zodat bij het begin van het programma de lopende band nog niets doet.
code:
1
2
3
4
if (p==0){
    Timer1->Enabled=false;
    p++;            }
}

dit staat binnen de functie
code:
1
2
3
4
5
6
if (Start->OnClick){
      start=1;}
  if (Stop->OnClick){
      start=0;}
  if (start==1){
   begin lopende band}

Nou is het zo dat ik steeds op de start knop moet drukken om het object 1 positie te verplaatsen..

wat doe ik fout

Verwijderd

Is het voor de structuur van je programma niet beter om de oude source
code:
1
2
3
4
5
6
7
8
StartButtonOnClick(TObject* Sender)
{
 TTimer1->Enabled=true;
}
StopButtonOnClick(TObject* Sender)
{
  TTimer1->Enabled=false;
}

te handhaven?

Verwijderd

Topicstarter
ja maar als ik die in de timer zet of er buiten dan komt er geen reactie...

misschien klinkt het redelijk dom wat ik doe, maar ik gebruik c builder ook nog maar een weeek

Verwijderd

Ik denk dat we je alleen kunnen helpen als je dat stuk source hier even post.

Verwijderd

Topicstarter
dit is de code
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
#include <vcl\vcl.h>
#pragma hdrstop

#include "proj3.h"
//---------------------------------------------------------------------------
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
int i=0,j,a=0,b=0,d,e,correct,defect,start=0,p;
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
Label4->Caption="0";
Label5->Caption="0";
randomize();
j=random(10);
Shape2->Brush->Color=clRed;
if (p==0){
    Timer1->Enabled=false;
    p++;            }

}
//---------------------------------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender){
    if (Start->OnClick){
      start=1;}
      if (Stop->OnClick){
      start=0;}

    if (i<560){
    Shape2->Left = Shape2->Left ++;
    i++;
    if (i==280){
        if (j>5){
            correct++;
           Label4->Caption=correct;
        }
      if (j<=5){
          defect++;
        Label5->Caption=defect;
        }
    }
 }
else {
    if (j<=4){
        if (a<151){
          Shape2->Top = Shape2->Top++;
        Shape1->Top = Shape1->Top++;
          a++;
        d++;
        if (d>149){
            if (b<150){
                Shape1->Top = Shape1->Top--;
              b++;
            }
        }
     }
    }
    else
        if (a<151){
          Shape2->Top = Shape2->Top--;
        Shape1->Top = Shape1->Top--;
        a++;
        e++;
        if (e>149){
            if (b<150){
            Shape2->Visible=False;
                Shape1->Top = Shape1->Top++;
              b++;
            }
        }
      }
   }
   if (d>150){
           if (b<150){
      Shape2->Visible=False;
          Shape1->Top = Shape1->Top--;
        b++;
      }
   }
}

Verwijderd

Dit gaat m.i. niet werken.

In het onTimer event ga je de Timer aan of uit zetten. Echter, als de timer niet aan staat zal het onTimer event niet aangeroepen worden.

Volgens mij is het trouwens niet mogelijk om een onClick-event af te vangen zoals jij het doet. Ik denk toch dat je de eerder genoemde variant moet gebruiken.

Om je code overzichtelijk te houden is het raadzaam om voortaan netjes in te springen en je haakjes te plaatsen.

[edit]
Tevens raad ik je aan om variabelen te nemen met vanzelfsprekende namen. Je hebt nu een hoop onduidelijke integers i,j,a,b,p etc.

Verwijderd

Topicstarter
ja sorry die code ziet er een beetje rommelig uit...
maar die code die eerder hier werd genoemd
waar moet ik die dan zetten...

misschien vraag ik te veel, maar ik helemaal gaar van dat programmeren de hele dag...

maar ik vindt het toch raar dat wanneer je op een knop drukt wordt start 1

als start 1 is gaat hij de if loop in

waarom stopt hij dan? als start niet wordt gewijzigd...

Verwijderd

Dubbelklik maar eens op de buttons op je form. Of kijk bij je ObjectInspector bij de events van je button.

Dan wordt de onClick-functie voor je gegenereert. Je kan dan zelf de functionaliteit invoeren. In jouw geval is dat het setten of unsetten van een variabele.

De loop van de lopende band zal vervolgens met die variabele gestuurd kunnen worden.

[edit] ObjectInspector toegevoegd

Verwijderd

Trouwens als je met de onClick events de timer enabled of disabled, dan kan de loop van je lopende band in het onTimer event van je timer staan.

Er is helemaal geen variabele nodig. Stupid me |:(

  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Ja sorry hoor, maar ik ga hier toch echt geen code posten die maar hoeft te copy/pasten.
Op donderdag 06 juni 2002 21:50 schreef BIZO het volgende:
als start 1 is gaat hij de if loop in
Wat is dat toch, een if-loop. Dit is al de 2de keer dat ik hier iemand tegenkom die het over een if-loop heeft.
Voor zover ik weet, is een if nog altijd geen loop.

https://fgheysels.github.io/


  • whoami
  • Registratie: December 2000
  • Laatst online: 21:11
Deze gooi ik maar dicht.
Ik denk dat je genoeg hints/tips/duwtjes in de goede richting gehad hebt om het op te lossen.

Ik verdenk je ervan dat je stiekem hoopt dat wij het volledig voor je oplossen, en daar dient GOT niet voor.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.