



(2 opiniones)
¿Nuestro componente necesita recibir eventos de teclado? Necesitas un TWinControl
¿Nuestro componente debe tener foco? Necesitas un TWinControl
¿Nuestro componente debe requerir dibujar formas o imágenes lo más rápido posible? Necesitas un TGraphicControl
¿Vamos a crear muchos componentes (cientos o miles) a la vez? Necesitas un TGraphicControl
¿Nuestro componente va a contener otros componentes dentro de él? Necesitas un TCustomControl.
La mayoría de los componentes de la paleta de Delphi descienden de TWinControl, ya que permiten que el usuario interactúe con ellos. Sin embargo, algunos muy concretos, como TShape o TLabel, son descendientes directos de TGraphicControl, ya que su misión no es que el usuario los maneje, sino que muestren algo en la ventana.
Como ya sabemos, la creación de un componente requiere conocer lo mejor posible la clase padre y el resto de clases antecesoras. En nuestro caso, debemos conocer, entre otras, la clase TGraphicControl, tal y como podemos ver en la imagen de la derecha.
Muchas de estas clases ya nos resultarán familiares, ya que TGraphicControl se basa en las mismas clases de la VCL que hemos visto hasta ahora: TComponente y TControl. Otras clases que podemos ver son TPersistent, que lo dejaremos para dentro de un rato, y TObject, de la no hemos hablado hasta ahora, aunque ya va siendo hora.
TObject es la base para cualquier clase que definamos en Object Pascal. Los componentes, por el mero hecho de ser clases, también descienden de TObject y heredan todas sus características. Normalmente no es necesario utilizar los métodos heredados de TObject, ya que estos son de un nivel demasiado bajo, y no nos solucionarán grandes problemas (excepto en contadas ocasiones).
El componente TGraphicControl no es muy complejo, así que no hay mucho que decir. Simplemente se trata de un envoltorio sobre la clase TCanvas, que es la encargada de dibujar directamente en pantalla, a través de un grupo de funciones del API llamado GDI (Graphic Independient Interface). Esta clase, en realidad, es la que debemos conocer muy bien para saber dibujar en la pantalla.
El único detalle importante que debemos conocer sobre TGraphicControl es que nos proporciona un método (llamado Paint) que debemos sobrescribir, y donde codificaremos lo necesario para dibujar el aspecto de nuestro componente. Dentro de este método podemos acceder a la propiedad Canvas, con la que dibujaremos las imágenes o figuras que sean necesarias. La VCL sólo llamará a este método cuando sea necesario dibujar el componente: cuando se muestra la ventana, si se maximiza, cuando reaparece la ventana detrás de otra, etc.
|