 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
Carmen Invitado
|
Publicado: Jue 31 Oct, 2002 9:41 am Asunto: Para leo.Boton derecho |
|
|
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 |
|
 |
_Leo Site Admin

Registrado: 11 Ago 2002Mensajes: 1875Ubicación: Lanzarote - Islas Canarias (España)
|
Publicado: Dom 03 Nov, 2002 1:54 am Asunto: |
|
|
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 |
|
 |
|
|
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
|
© 2002–2026 Club Builder · Funciona con phpBB.
|