Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Gráficos (https://www.clubdelphi.com/foros/forumdisplay.php?f=8)
-   -   Transparencias reales... (https://www.clubdelphi.com/foros/showthread.php?t=23274)

elcigarra 12-07-2005 18:44:56

Transparencias reales...
 
Tengo un .bmp con zonas transparentes en un form. Uso, p.ej. un TImage. Tienen idea como hacer para que un componente que este atrás de las zonas transparetes reciba mensajes del mouse??. Yo ya probé definiendo una región, pero como el control (TImage) es rectangular, el mensaje cm_mouseenter de windows lo hace en el canvas y no en la región. Haciendo click en un botón que esté debajo este ni se entera. De hecho esto pasa con todos los controles transparentes, por ejemplo en TBevel. Si está arriba, lo de atrás no recibe nada.

delphi.com.ar 12-07-2005 19:54:48

Cita:

Empezado por elcigarra
Yo ya probé definiendo una región, pero como el control (TImage) es rectangular, el mensaje cm_mouseenter de windows lo hace en el canvas y no en la región.

Mmmm.. el canvas no recibe mensajes, si la regino no es rectangular, no recibirás mensajes fuera de la región definida.

Hace poco que hice un componente en 5' a un compañero, que hace eso. El programaba en VB.NET y yo le hice este en un ratito, solo para callarlo un rato ;). Te lo subí aquí, lo llamé RegionPanel (Mal llamado), no lo he utilizado solo soporta Bitmaps.

elcigarra 13-07-2005 00:31:38

gracias...
 
Gracias, Federico. Hoy de noche cuando mis hijos que estan de vacaciones se duerman creo que me va a dar la energía para probarlo. Todo esto iba a la pregunta que puse en el foro de OOP y que nadie contestó. De repente puedo adaptar tu respuesta a ese problema.

Para que te hagas una idea medio simple de lo que quiero hacer, fijate el codigo de este botón. Si ponés uno de estos botones mitad abajo del otro, cuando hacés click fuera de la elipse (pero dentro del canvas rectangular) del que está arriba, el que está abajo ni se entera.

delphi.com.ar 13-07-2005 14:29:20

En ese botón se crea una región, pero solo se la utiliza para consultar los mensajes WM_LBUTTONDOWN y WM_LBUTTONUP.
Si debajo de la línea:
Código Delphi [-]
FKRgn := CreateEllipticRgn(FBtnPoints[1].x,FBtnPoints[1].y,FBtnPoints[2].x,FBtnPoints[2].y);
agregas:
Código Delphi [-]
SetWindowRGN(Handle, FKRgn, False);
Puedes prescindir de capturar esos dos mensajes. Por contrapartida para Windows es mucho mas costoso trabajar con regiones irregulares que con regiones regulares (Rectaguulares)

Saludos!


La franja horaria es GMT +2. Ahora son las 09:46:37.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi