Visual C++ .NET - Cambiar color boton

 
Vista:

Cambiar color boton

Publicado por Fernando (1 intervención) el 18/11/2009 12:54:28
Hola, tengo una aplicacion en visual c++ que consta de diferentes formularios.
Resulta que en uno de ellos, me gustaria que al pulsar un boton, otro boton parpadeara cambiando a otro color durante 3 segundos, es decir, si al principio staba en un color gris, quiero que cada segundo se ponga en verde, es decir, que cambie 3 veces,y al final se quede con el color que tenia al principio.
He estado manejando timers, pero la verdad es que no consigo que lo haga correctamente.
Agradeceria mucho vuestros comentarios.
Un saludo, Miguel Angel
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Implementación de parpadeo de botón con temporizador

Publicado por Alejandro (265 intervenciones) el 07/02/2024 19:45:27
Fernando, para lograr el efecto de cambio de color intermitente en un botón durante un período de tiempo específico en una aplicación de Visual C++, puedes usar la clase `System::Windows::Forms::Timer` y controlar los eventos de temporizador. Aquí hay un ejemplo de cómo podrías implementar esto en un formulario de Windows:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <Windows.h>
#include <vcclr.h>
#include <string>
 
using namespace System;
using namespace System::Windows::Forms;
 
public ref class MainForm : public Form
{
private:
    Button^ button1; // Botón que parpadeará
    Timer^ timer;    // Temporizador para el parpadeo
    int secondsLeft; // Contador de segundos restantes
 
public:
    MainForm()
    {
        // Inicializar componentes
        InitializeComponents();
 
        // Configurar temporizador
        timer = gcnew Timer();
        timer->Interval = 1000; // Intervalo en milisegundos
        timer->Tick += gcnew EventHandler(this, &MainForm::TimerTick);
 
        // Configurar el botón
        button1 = gcnew Button();
        button1->Text = "Parpadear";
        button1->Location = Point(50, 50);
        button1->Click += gcnew EventHandler(this, &MainForm::Button1Click);
        Controls->Add(button1);
 
        // Configurar el contador de segundos
        secondsLeft = 3;
    }
 
private:
    void InitializeComponents()
    {
        // Aquí puedes inicializar otros componentes del formulario si es necesario.
        // Por ejemplo, títulos, etiquetas, cuadros de texto, etc.
    }
 
    void Button1Click(Object^ sender, EventArgs^ e)
    {
        // Iniciar el temporizador cuando se hace clic en el botón
        timer->Start();
    }
 
    void TimerTick(Object^ sender, EventArgs^ e)
    {
        // Manejar el evento de temporizador
 
        // Cambiar el color del botón cada segundo
        if (secondsLeft > 0)
        {
            if (secondsLeft % 2 == 0)
            {
                // Color verde en segundos pares
                button1->BackColor = System::Drawing::Color::Green;
            }
            else
            {
                // Color original en segundos impares
                button1->BackColor = System::Drawing::Color::Gray;
            }
 
            // Decrementar el contador de segundos
            secondsLeft--;
        }
        else
        {
            // Detener el temporizador y restaurar el color original del botón
            timer->Stop();
            button1->BackColor = System::Drawing::Color::Gray;
            secondsLeft = 3; // Reiniciar el contador para futuros clics
        }
    }
};
 
int main()
{
    Application::Run(gcnew MainForm());
    return 0;
}

Este ejemplo utiliza un temporizador que cambia el color del botón entre gris y verde cada segundo durante 3 segundos. Después de eso, restaura el color original del botón y reinicia el temporizador para futuros clics. Puedes ajustar el código según tus necesidades específicas y agregar más funcionalidades según sea necesario.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar