Ver Mensaje Individual
  #5  
Antiguo 16-09-2007
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Smile

¡Hola!

Cita:
Empezado por José Luis Garcí Ver Mensaje
Es posible capturar el paint de un form (OnPaint) desde un com ponente, ya que el WM_Paint no lo hace?
Hoy mientras me duchaba, por alguna divagación del pensamiento vino a mi mente el componente que estás creando (http://www.clubdelphi.com/foros/showthread.php?t=47994), el cual, supongo, es la razón de este nuevo hilo.

Win32.hlp, ese valioso archivo que todos los programadores Delphi tenemos dice sobre el mensaje wm_Paint:
Cita:
Empezado por la ayuda de la API de Windows
An application sends the WM_PAINT message when Windows or another application makes a request to paint a portion of an application's window. The message is sent when the UpdateWindow or RedrawWindow function is called, or by the DispatchMessage function when the application obtains a WM_PAINT message by using the GetMessage or PeekMessage function.
El mensaje sólo es enviado a los objetos visibles (genéricamente llamados "windows" en la API). Sean botones, cuadros de texto o formas, todos los objetos que en Delphi derivan de la clase TWinControl son susceptibles a recibir el mensaje wm_Paint. Tu componente no recibe el mensaje porque no es un control (componente visual), necesitaría ser derivado de TWinControl para que reciba dicho mensaje de manera natural.

Visto esto, la pregunta ético-técnica sería: ¿mi componente tiene que ser visual para darle cierto efecto visual a otros componentes? Estrictamente, la respuesta es no. Si quieres hacerlo fácil, adelante, deriva TCCDShadow de TWinControl y sí recibirá el mensaje, pero, a reserva de lo mucho que ignoro sobre los mensajes de Windows, me parece que no sería suficiente y quizá en algunos casos no funcione tal como se espera el método ShadowDraw.

La idea de lo que buscas es interesante (aunque todavía no logro imaginarme qué habrá de hacer exactamente el componente). Todo lo que entiendo es que le imprime cierto efecto visual a los controles que contenga la forma. Necesitaría analizarlo con un poco más de tiempo y calma para proponer alguna alternativa. Por el momento, sólo puedo invitar a otros a no dejar solo a José Luis. ¡Ánimo!

Un TAbrazo.

Al González.

P.D. Es en estos momentos cuando se echa de menos la gran disponibilidad de Román para ayudar a resolver casos de POO. Un saludo Román, esperamos verte pronto por acá.
Responder Con Cita