none
Problema con evento / scroll RRS feed

  • Pregunta

  • Hola

    Estoy haciendo una aplicacion en Visual C++ 2008, e intento hacer lo siguiente (lo voy a resumir un poco para indicar solo lo que interesa ahora mismo):

    En la ventana basica hay 2 botones (A y B) y un panel. El panel a su vez contiene una etiqueta.

    Cuando pulso A, oculto el panel (this->panel->Visible = false) y cuando pulso B, lo muestro.

    Mi intención es que cuando haga visible el panel, la etiqueta empiece a moverse hacia arriba (en plan créditos de una pelicula), y al llegar al tope vuelva a salir por abajo.

    Lo primero que se me ha ocurrido es crear un evento que se ejecute cuando la propiedad "visible" del panel cambie.
    En ese evento he puesto:
    while (this->panel->visible ==true){
    mueve 1 pixel hacia arriba la etiqueta }  // <-- pseudocódigo Big Smile

    El problema es que entra en bucle infinito, ya que parece que mientras está manejando un evento no responde a los demás eventos, y por tanto no se le puede dar al boton para detener ese while.

    Como segunda opción he pensado en poner en ese evento:
    mueve 1 pixel hacia arriba la etiqueta; (para ello modifico la propiedad "Location" de la etiqueta)

    y luego poner otro evento que se active cuando cambie la propiedad Location de la etiqueta, pero que solo lo haga cuando el panel esta visible.
    De esta manera, el primer evento modifica location, y el evento de location se va "llamando a sí mismo" ya que modifica la propiedad location. El problema parece el mismo de antes... mientras está llamando al evento "location_changed" recursivamente, no admite otros eventos.

    Tambien me he dado cuenta de que ni siquiera me muestra la etiqueta en pantalla (supongo que el "dibujar" los controles lo manejara otro evento, y por tanto no le dejo actuar).

    El tema de que la etiqueta suba y luego vuelva a aparecer por abajo no me interesa (en caso de solucionar lo que digo, sé cómo hacerlo).

    Bueno, espero haberme explicado bien. No tengo mucha experiencia en este tipo de cosas, así que perdonadme si la he liado mucho xD

    Muchas gracias y un saludo
    jueves, 16 de octubre de 2008 22:29

Todas las respuestas

  • Añade un timer a la ficha. En el evento de visible del panel, ponlo en marcha o páralo según corresponda, y en el evento de disparo del timer, actualiza dicho panel.

    lunes, 3 de noviembre de 2008 10:59
    Moderador