ApolloPT Posted June 2, 2008 at 11:24 AM Report Share #189114 Posted June 2, 2008 at 11:24 AM Olá a todos, Ando a fazer um trabalho para uma disciplina de programação e deparei-me com um problema ao qual não arranjo explicação e espero aqui que algum de vocês me ajude pois já esgotei todas as minhas tentativas àcerca do assunto 😛 ! Isto é, quero que o timer devolva um valor inteiro que possa ser usado dentro de um botão mais precisamente que o timer comece dentro ao clicar no botão e que gere uma imagem aleatória e que permita usar o valor da variavel aleatória dentro do botão fora do timer, pelo código que lhe meti era suposto ter feito isto tudo ( é a primeira vez que estou a usar timers mas está tudo no lugar só se falta alguma coisa! ), mas o que faz na realidade é que ao clicar-mos mostra a imagem mas a variavel que contém o valor que vai ser introduzido na estrutura de repetição ( if ) dentro do timer para escolher a imagem não deixa passar a variavel para fora mais precisamente dentro do botão a tempo real, isto é, só aparece a seguir o valor do clique anterior andado assim atrasado a mostrar o valor atribuido a variavel no clique anterior e a veriavel está declarada em private para todos os objectos timer e button terem acesso a essa variavel com o valor aleatório! P.S. Se for necessário forneço o código para ajudar! Aguardo resposta, ApolloPT Link to comment Share on other sites More sharing options...
TheDark Posted June 2, 2008 at 04:00 PM Report Share #189146 Posted June 2, 2008 at 04:00 PM P.S. Se for necessário forneço o código para ajudar! Agradeço que o faças. Não consegui acompanhar a tua explicação, mas com código pode ser que consiga. 😛 Desaparecido. Link to comment Share on other sites More sharing options...
ApolloPT Posted June 2, 2008 at 04:44 PM Author Report Share #189155 Posted June 2, 2008 at 04:44 PM #pragma endregion private: int alias, alias1, alias2; private: System::Void Form1_Load(System::Object^ sender, System::EventArgs^ e) { alias=0; alias1=0; alias2=0; } private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) { timer1->Enabled=true; timer1->Start(); timer2->Enabled=true; timer2->Start(); timer3->Enabled=true; timer3->Start(); textBox4->Text=Convert::ToString(alias); textBox5->Text=Convert::ToString(alias1); textBox6->Text=Convert::ToString(alias2); } private: System::Void timer1_Tick(System::Object^ sender, System::EventArgs^ e) { DateTime n = DateTime::Now; Random^i=gcnew Random(n.Millisecond); alias = i->Next(10)+1; timer1->Enabled=false; if (alias==1){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ananas.png"); } else if (alias==2){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\banana.png"); } else if (alias==3){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cenoura.png"); } else if (alias==4){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cereja.png"); } else if (alias==5){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\couve.png"); } else if (alias==6){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ervilhas.png"); } else if (alias==7){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\laranja.png"); } else if (alias==8){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\nabo.png"); } else if (alias==9){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\noz.png"); } else if (alias==10){ pictureBox1->Image=Drawing::Image::FromFile("C:\\projecto\\img\\uvas.png"); } textBox1->Text=Convert::ToString(alias); } private: System::Void timer2_Tick(System::Object^ sender, System::EventArgs^ e) { DateTime n = DateTime::Now; Random^i=gcnew Random(n.Millisecond); alias1 = i->Next(10)+1; timer2->Enabled=false; if (alias1==1){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\uvas.png"); } else if (alias1==2){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\noz.png"); } else if (alias1==3){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\nabo.png"); } else if (alias1==4){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\laranja.png"); } else if (alias1==5){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ervilhas.png"); } else if (alias1==6){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\couve.png"); } else if (alias1==7){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cereja.png"); } else if (alias1==8){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cenoura.png"); } else if (alias1==9){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\banana.png"); } else if (alias1==10){ pictureBox2->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ananas.png"); } textBox2->Text=Convert::ToString(alias1); } private: System::Void timer3_Tick(System::Object^ sender, System::EventArgs^ e) { DateTime n = DateTime::Now; Random^i=gcnew Random(n.Millisecond); alias2 = i->Next(10)+1; timer3->Enabled=false; if (alias2==1){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\banana.png"); } else if (alias2==2){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ananas.png"); } else if (alias2==3){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cereja.png"); } else if (alias2==4){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\couve.png"); } else if (alias2==5){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\ervilhas.png"); } else if (alias2==6){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\laranja.png"); } else if (alias2==7){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\nabo.png"); } else if (alias2==8){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\noz.png"); } else if (alias2==9){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\uvas.png"); } else if (alias2==10){ pictureBox3->Image=Drawing::Image::FromFile("C:\\projecto\\img\\cenoura.png"); } textBox3->Text=Convert::ToString(alias2); } Só meti uma parte do código que foi "cirurgicamente" modificado para ficar mais simples e rápido de se entender porque o problema está detectado mas "cura" é que está em falta 😛 ! Quando é executado aparece o seguindo nos objectos: textBox1: <número random> textBox2: <número random> textBox3: <número random> textBox4: 0 textBox5: 0 textBox6: 0 E aqui fica a pergunta porque não aparece os mesmos valores das primeiras 3 textBox's nas 3 últimas?! P.S. Pareceu-me ter ficado tudo em ordem mas se no debug der algum erro tramado avisem por aqui! E Dark desculpa não ter posto o tópico no lugar certo mas quando dei pelo erro já era tarde ? Link to comment Share on other sites More sharing options...
ApolloPT Posted June 6, 2008 at 01:31 PM Author Report Share #189769 Posted June 6, 2008 at 01:31 PM Com os timers não consegui meter a variavél a sair mas penso que o problema tenha sido por causa do desligar o timer a meio do do seu objecto em si! Mas como forma alternativa retirei o código todo dos timers e meti dentro do botão e só declarei uma vez a variavel n e i e o problema ficou resolvido! Link to comment Share on other sites More sharing options...
TheDark Posted June 7, 2008 at 01:55 AM Report Share #189908 Posted June 7, 2008 at 01:55 AM Oh que raio se passa comigo? Começo a responder aos tópicos e depois não vejo quando respondem. Desculpa lá :bored: Ainda bem que conseguiste! Desaparecido. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now