SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: zaryus en Martes 22 de Enero de 2008, 01:41

Título: Abrir Messagebox Solo Una Vez
Publicado por: zaryus en Martes 22 de Enero de 2008, 01:41
hola amigos ,tengo el siguientew codigo, para que cuaando transcurrra el tiempo indicado en un combobox (elegido por el usuario), se produzca algo, ejecucion de un comando o algo:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit2.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm2 *Form2;
//---------------------------------------------------------------------------
__fastcall TForm2::TForm2(TComponent* Owner)
   : TForm(Owner)
{

}
//---------------------------------------------------------------------------

void __fastcall TForm2::Button1Click(TObject *Sender)
{
Timer1->Interval = ComboBox1->ItemIndex;
Timer1->Enabled  = true;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::FormCreate(TObject *Sender)
{
 Timer1->Enabled=false;
}
//---------------------------------------------------------------------------

void __fastcall TForm2::Timer1Timer(TObject *Sender)
{
    ShowMessage(L"oso nicoloso");

   Timer1->Enabled=false;
}
//---------------------------------------------------------------------------


Con el messagebox controlo que se realice bien, luego cuando este bueno lo borrare  y ejecutare el comando que quiero.
Pero el problema es que se produce un bucle y se carga infinitamente el MessageBox, ya no se como hacerlo, lo otro que necesito es extraer el contenido del combobox seleccionado por el usuario pero no se si lo estoy haciendo correctamente.
Muchas gracias.
Saludines :D.
Título: Re: Abrir Messagebox Solo Una Vez
Publicado por: zaryus en Jueves 24 de Enero de 2008, 00:40
esto debe ser sencillisimo para ustedes que estan mas avanzados que yo.
Lo que quiero es que el messagebox salga solo una vez, luego lo sustituire por la ejecucionde un comando, pero si no sale bien esta primera parte no podre proseguir ...
Muchas gracias
Título: Re: Abrir Messagebox Solo Una Vez
Publicado por: saulillo en Jueves 24 de Enero de 2008, 09:51
Hola,

Así de primeras se me ocurre que declares una variable booleana, la inicializas a false. Luego antes de que se ejecute el comando compruebas si el booleano esta a false (if (var==false)) y cuando se ejecute lo que quieras lo cambias a true. Así cada vez que vaya a ejecutarse tu comando comprobará la variable y como no va a ser false, no se ejecutara.

Un saludo
Título: Re: Abrir Messagebox Solo Una Vez
Publicado por: Eternal Idol en Jueves 24 de Enero de 2008, 09:59
Puede que el problema sea que no se ejecuta todo el codigo hasta que no se termina el ShowMessage, proba asi:

Código: Text
  1.  
  2. void __fastcall TForm2::Timer1Timer(TObject *Sender)
  3. {
  4.   Timer1-&#62;Enabled=false;
  5.   ShowMessage(L&#34;oso nicoloso&#34;);
  6. }
  7.  
  8.  
Título: Re: Abrir Messagebox Solo Una Vez
Publicado por: zaryus en Viernes 25 de Enero de 2008, 01:40
:D muchas gracias Saulillo  and Eternal Idol, el problema es que habia que invertir los valores que hablo Eternal, quedo bastante bueno :D.
saludillos.