Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Para leo.Boton derecho

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Para leo.Boton derecho Responder citando

Hola, me dirijo a ti a ver si tu me puedes contestar, hice la pregunta hace una semana pero no me ha contestado nadie.
Tengo que deshabilitar el boton derecho del raton al hacer click en un boton, es decir, quiero que a partir de pulsar ese boton, con el boton derecho ya no se pueda hacer nada en ese form.
Muchas gracias y perdona por dirigirme a ti directamente pero estoy muy agobiada.
Volver arriba
Mensaje    Asunto: Responder citando

Hola Carmen:

Tenemos que interceptar los mensajes WM_RBUTTONUP y WM_RBUTTONDOWN dirigidos al Form que queramos. Podemos hacerlo del siguiente modo:

1.- Creamos para el ejemplo un proyecto nuevo vacio (Form1) y añadimos un TButton (Button1).

2.- Ponemos el siguiente código en el constructor del Form1:
Código:
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
    Application->OnMessage = AppMessage;
}

3.- En el evento OnClick del Button1 añadimos el siguiente código:
Código:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // Usaremos la propiedad Tag del botón como flag para
    //   activar o desactivar el botón derecho del ratón.
    //   Cada vez que pulsamos el botón cambia su estado.
    Button1->Tag = !Button1->Tag;
}

4.- Declaramos la función que usaremos para interceptar los mensajes en la cabecera en la parte privada por ejemplo:
Código:
...
private:   // User declarations
    void __fastcall AppMessage(MSG &Msg, bool &Handled);
...

5.- Y la implementamos:
Código:
void __fastcall TForm1::AppMessage(MSG &Msg, bool &Handled)
{
    // Usamos Tag como flag para activar o desactivar
    Handled =
        Button1->Tag
        && (WM_RBUTTONDOWN == Msg.message
        || WM_RBUTTONUP == Msg.message)
        // Comprobamos que es el Form1
        && (Screen->ActiveForm == Form1);
}


Y listo, añadimos cualquier componente que haga uso del botón derecho para comprobar su efectividad y ejecutamos el ejemplo, al pulsar en el Button1 dejará de funcionar el botón derecho del ratón hasta la siguiente vez que pulsemos de nuevo el Button1.

Si también quieres deshabilitar el botón derecho cuando se pulsa en la barra de titulo añade WM_NCRBUTTONUP y WM_NCRBUTTONDOWN.

Saludos:
_Leo
Volver arriba
Ver perfil de usuario Enviar mensaje privado
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.