Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Delphi - Collegamento tra checkbox e timer
Forum - Delphi - Collegamento tra checkbox e timer

Avatar
rep87 (Normal User)
Newbie


Messaggi: 17
Iscritto: 27/12/2010

Segnala al moderatore
Postato alle 22:58
Venerdì, 07/01/2011
Buonasera ragazzi..

Io ho riscontrato un problema di questo tipo:

Ho una checkbox, alla quale, nell'evento OnClick è associato questo tipo di codice:

Codice sorgente - presumibilmente Delphi

  1. if checkbox1.checked=true then timer.enabled:=true
  2. else
  3. begin
  4. timer.enabled:=false;
  5. ...
  6. end;



Nel timer è scritto questo codice :

Codice sorgente - presumibilmente Plain Text

  1. y:=sin(x);
  2. image1.canvas.pizels[x,y]:=clblack;



Ovviamente è un po' diverso nel mio programma, ma il succo è questo.

La mia domanda è: perchè, avviando il programma, clicco sulla checkbox e tutto funziona, ci riclicco (deselezionandola, quindi) e giustamente attua i comandi contenuti dopo else, MA SE RI-CLICCO (SELEZIONANDOLA) NON ACCADE NULLA?!

Spero mi sappiate dare una risposta, e magari spiegare cosa fare!
:-?:-?:-?:-? :idea::idea::idea::idea:

PM Quote
Avatar
a_butta (Member)
Expert


Messaggi: 578
Iscritto: 16/03/2010

Segnala al moderatore
Postato alle 1:37
Sabato, 08/01/2011
Se ti riferisci al solito progetto, ti sei ricordato di azzerare la variabile X ogni volta che attivi il timer :D

PM Quote
Avatar
rep87 (Normal User)
Newbie


Messaggi: 17
Iscritto: 27/12/2010

Segnala al moderatore
Postato alle 14:59
Sabato, 08/01/2011
Ho trovato l'errore, ma non so come risolverlo.

Allora, la mia checkbox ha il seguente codice:

Codice sorgente - presumibilmente Delphi

  1. procedure TForm5.CheckBox9Click(Sender: TObject);
  2. begin
  3. if checkbox9.checked=true then
  4. ttimerengine.Enabled:=true
  5. else
  6.     begin
  7.     with image1.Canvas do
  8.     begin
  9.     for px:=0 to image1.Width do
  10.         begin
  11.               //disegna il seno, BIANCO!
  12.               x1:=pi*trackbar2.position;
  13.               x2:=-pi*trackbar2.position;
  14.               y1:=trackbar1.position;
  15.               y2:=-trackbar1.position;
  16.               //Cambia le coordinate schermo in coordinate cartesiane
  17.               x:= strtofloat(edit3.Text)*px*((x2- x1)/image1.Width)+strtofloat(edit1.Text);
  18.               y:=-strtofloat(edit4.Text)*sin(x)+strtofloat(edit2.text);
  19.               //Cambia le coordinate cartesiane in coordinate schermo
  20.               py:=trunc(image1.height-(y-y1)*image1.height/(y2-y1));
  21.               Image1.Canvas.Pixels[px,py]:=clwhite;
  22.               image1.Canvas.Pen.Width:=1;
  23.         end;
  24.     end;
  25.     end;
  26. end;



Nel timer ci sono le istruzioni per disegnare il seno, come mi avevi giustamente consigliato.

Ora, come detto, riscontro il problema che al terzo click non ottengo nulla.

Ho provato a cancellare dal codice della checkbox tutto il codice che segue l'else...

E IL TUTTO FUNZIONA!!!!!!!!!!!!!!!!! :om::om::om::om:

In altre parole, clicco sulla checkbox e mi si disegna il seno. Ri-clicco, deselezionandola, e non accade nulla. Cancello la canvas, riclicco la checkbox, e il seno ri-appare! (cosa che prima non succedeva)...

..perciò, cosa c'è che non va in quella parte di codice?!?!

Help me! ;)..:hail::hail:!!

PM Quote