FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Saber cuando un Form hace un Paint
Es posible capturar el paint de un form (OnPaint) desde un com ponente, ya que el WM_Paint no lo hace?
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#2
|
||||
|
||||
Pues claro que es posible, ¿que no es posible en nuestro amado Delphi?
Puedes capturar el evento OnPaint del Form desde tu componente:
|
#3
|
||||
|
||||
PAldave, gracias por tu respuesta pero me da un error de incompatible tipos Tcontrol con mi Tcomponent.
De todas maneras, me gustaria saber si vale para el resto de los eventos.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#4
|
||||
|
||||
Vale para todos los eventos.
El error se debe a que tu componente no es visual, es decir, deriva de TComponent y no de TControl, por lo cual no tiene un Form "padre". La forma de solucionarlo podría ser la siguiente: debido a que los componentes no visuales tienen como propietario el formulario en el cual están. Espero que con esto soluciones el problema.[/font][FONT=verdana,geneva,lucida,'lucida grande',arial,helvetica,sans-serif] Saludos. Última edición por paldave fecha: 16-09-2007 a las 00:37:25. |
#5
|
||||
|
||||
¡Hola!
Cita:
Win32.hlp, ese valioso archivo que todos los programadores Delphi tenemos dice sobre el mensaje wm_Paint: Cita:
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á. |
#6
|
||||
|
||||
Gracias a ambos, he de decir, que efectivamentem ene ste caso es sólo un componente visual, pero que dependiendo, del resultado que me de derivara, en posteriores componentes, visuales, y no visuales, que ire poniendo en el club, tengo en mente un buen puñado, pero soy muy lento programandolos, por que me pierdo en la OPP, tengo multitud de libros sobre delphi hasta el 6, incluyendo La Cara Oculta de DElphi 4, y no termino de allar las respuestas.
Con Delphi, mi gran problema, es el Ingles, me peleo a ratos, con el de mis 6 Delphi (2,3,4,5,6,Turbo), sólo tengo el manual en españos del 4, Son comprados Orginales, todos, exeptuando el Turbo que es free en su página, yo hasta hace unos seis años, sólo me interesaba, programar para bases de datos, hara unos 4 tube una serie de problemas en la empresa, que aún acarreo, pero en un principio, no me quedaba casi tiempo libre, ahora aunque vivo mucho mas lejos, tengo más tiempo. Pero soy persistente, suelo trabajar con muchas cosas a la vez, llevo trabajando 24 años (desde los 16) y he aprendido muchas profesiones, y en todas ellas la tenacidad, es una cuestion que no puede fallar, me he propuesto terminar el componente, y lo hare. Gracias por vuestra ayuda y probare los cambios expuestos.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#7
|
||||
|
||||
No me vale el evcento Ompaint, ya que se repite multitud de veces, en un segundo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#8
|
||||
|
||||
Hola
No me hagais mucho caso en esto, de componentes no se nada, pero leyendo un poco encontre esto: Cita:
Pero dice que TCustomControl es para el manejo del metodo Paint. Me quede con la duda y por eso lo puse, nada mas para aprender. Saludos
__________________
Siempre Novato |
#9
|
||||
|
||||
¡Hola a todos y bienvenido de regreso Carlos!
Cita:
Desde ayer he venido pensando que el nuevo componente podría contener dentro de sí mismo un objeto TApplicationEvents con el cual, a través de su evento OnMessage, se intercepten todos los mensajes wm_Paint que le lleguen a la aplicación y proceda en consecuencia a realizar su cometido cuando dicho mensaje vaya dirigido a la forma o a alguno de sus controles. Pero de momento no estoy seguro de si todos los mensaje wm_Paint llegan al evento OnMessage de la aplicación (TApplicationEvents.OnMessage, en este caso). Sería cosa de investigar un poco más. De todas maneras, creo que no se pierde mucho con intentarlo. Un wm_abrazo. Al González. |
#10
|
||||
|
||||
Gracias pro vuetra ayuda, lo he intentado, con un TWinControl, Con un TCustomControl, Con TImagen, no recuerso si con alguno más, pero el fallos lo comenta AI Gonzáles, es un componente no visual que realiza un efecto en los controles del form, y no un componente visual, ya que aunque lo podria mandar al fondo, el problema es si otro componentenecesitase ir al fondo, quedaria, mal.
Lo tengo medio solucionado, creando un timer en el componente, el único problema es que si el valor de interval es muy bajo, se puede llegar a notar un ligero parpadeo, y si el intervalo es muy largo, cualquier refresh, repaint, minimize, etc, que oblige a redibujar los controles, seguiria sin aparecer hasta llegar al evento OnTimer, no se si me he explicado bien. Pronto pondre este componente, en el club, si alguien tiene la solución, como siempre es libre de modificarlo, al gusto, que para eso soy un principiante, tambien añadire los TCCDEditZoom y TCCDDBEditZoom, ya modificados,me quedan pequeños detalles, pero ha sido una semana muy dura de trabajo y llego casi todos los días tarde. Unb pequeño detalle, los que han probado el componente, que les parece el efecto, se han dado cuenta, que ya no se han seguido introuciendo componentes para el Club, por mi parte pienso seguir, será que los compañeros, han estado muy liados.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#11
|
||||
|
||||
¡Hola José Luis!
¿Quién es AI Gonzáles? ¿Algún robot con inteligencia artificial? Échale un vistazo a esta sección de Torry's Delphi Pages. Estuve mirando y encontré que, en algunos casos similares al tuyo, los programadores han recurrido a la sustitución del manejador del evento OnPaint de la forma (técnica que en lo personal sólo empleo como último recurso) o la sustitución de su propiedad WindowProc. Dos ejemplos de ello son los componentes TAeroGlass y TAlphaBlendForm que ahí aparecen. Espero sirva de algo. Hasta pronto. Al. |
#12
|
||||
|
||||
Gracias, echando un vistazo.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
#13
|
|||
|
|||
Cita:
Creo que capturar el evento OnPaint del form sería la mejor manera de solucionar el problema del pintado del componente. En los ejemplos que te mostró Al González utilizan el OnPaint para cambiar la apariencia de los controles.
__________________
Saludos. |
#14
|
||||
|
||||
Como hacer un breakpoint del evento en el código?
__________________
Un saludo desde Canarias, "El abuelo Cebolleta" |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Propiedad o variable de un form se hace=0 | fedelphi | OOP | 5 | 14-09-2007 16:12:46 |
cuando llamo ejecutar un hilo dentro del proceso del hilo no lo hace | robertosc | Varios | 1 | 14-08-2007 22:11:09 |
Saber cuando ingresan a tu PC | genius | Varios | 4 | 11-12-2006 14:47:52 |
Saber cuando termina una consulta | zurech | MySQL | 2 | 16-09-2005 17:51:06 |
Cuando se llama un SP dentro de otro SP autom. se hace rollback por error | cuxoapat | Firebird e Interbase | 1 | 06-04-2005 22:15:50 |
|