Programación General > C++ Builder

 Pregunta

(1/3) > >>

Devilcpc:
buenas

necesito hacer un while q se ejecute hasta q el usuario presione un boton (button1), queria saber q condicion le tengo q poner al while

ej:
while (No se presiona el boton)
{



}

si no me explique bien avisenmen, gracias

Saludos

Eternal Idol:
Podes usar una variable booleana (que puede tener dos valores, TRUE o FALSE).

BOOL BotonPresionado = false;

Y en el evento de click del botón poner BotonPresionado = true;

while (BotonPresionado == false)
{
  //codigo que se ejecutara despues de que presionen el boton
  BotonPresionado = false; //para no volver a ejecutarse hasta que se presione el boton
}

No es muy eficiente pero no entiendo que queres realmente.

 :hola:  :ph34r:  :comp:

Hodoacro:
Creo que la solución que te ha dado nuestro colega no te va a servir, ya que mientras que esté en ejecución cualquier bucle (no solo el While) de tu programa los eventos de los diferente controles no están en activo, de hecho, el programa parecerá colgado y no hará nada.

Si deseas que un buque este en activo mientras que el usuario no pulse algún botón (me imagino que eso es lo que quieres), una de las soluciones es  incluir un objeto TTimer. Este objeto activa una hilo paralelo de ejecución que es visitado cada cierto tiempo.  A partir de este objeto se puede ejecutar cualquier función para hacer lo que sea. Lo bueno de este objeto es que no para la ejecución del hilo principal del programa y los eventos de los controles estarán en activo. De esta forma puedes usar una variable bool que se active cuando pulses el botón deseado. Sólo tienes que consultar esta variable en la función o funciones asociadas al hilo de ejecución generado por TTimer....., y ya lo tienes.

Revisa la información de TTimer, puede ser la solución.

Devilcpc:
muchas gracias por la respuesta

efectivamente eso es lo q me pasa, el programa me queda colgado

eso era lo q queria saber, hace poco estube averiguando y me dijeron lo mismo q tengo q aprender a trabajar con hilos y con TTimer, si tendiras alguna informacion de como usarlos, alguna pagina web o algo, me seria muy util...

Gracias de nuevo

Adrian

Hodoacro:
La verdad es que no tengo idea de donde puedes encontrar información de este tema, yo me ayudo de un libro de Anaya multimedia llamado Programación en C++ Builder. Te doy los datos ya que es el libro es español, que yo conozca, que tiene la información más extensa sobre este y otros temas. Es para el Builder 1 pero te sirve para cualquier otra versión.

Nombre: Programación en C++ Builder (adquiera los fundamentos básicos de programación).
Editorial : Anaya Multimedia.
Autor: Francisco Charte.
ISBS : 84-415-0203-X

El problema es que es del 1997 y no sé si seguiran vendiéndolo.

De todas formas utilizar TTimer no es nada complicado:

Create un Objeto TTimer, bien insertandolo desde el editor (desde la pestaña System) o creandolo en tiempo de ejecucion.

El objeto tiene dos propiedades significativas.

Interval: Que determina cada cuantos milisegundo será visitado el objeto.
Enabled: Que activa y/o desactiva el objeto.

Tiene un sólo evento :

OnTimer: La función asociada a este evento será la que se ejecutará cada "Interval" milisegundos.

A partir de la función asociada a OnTimer puedes llamar a cualquier otra función o funciones del mismo programa. Las funciones que se ejecutan desde TTimer no tienen nada de especial, son funciones normales, solo tienen la salvedad de ser ejecutadas cada cierto tiempo.

Para activar/desactivar el objeto usa TTimer->Enabled=true o false.

Espero que te sirva.

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa