Creación de componentes VCL: Componentes gráficos - No esta bien copiar, pero sí coger ideas

6 - No esta bien copiar, pero sí coger ideas

[editar]
Curso gratis creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Pues visto que el componente TMonthCalendar hace esto, y que nosotros ya sabemos cómo, vamos a aplicarlo en nuestro tablero de ajedrez. En nuestro caso también podemos configurar los colores de las casillas, ya que en ningún sitio dice que tengan que ser obligatoriamente de color blanco y negro. Además, podríamos configurar el color del borde, incluso no sólo el color, sino también podríamos configurar si debe aparecer o no.

Todo esto lo vamos a hacer a través de dos clases: una para los colores de las casillas, llamada TColoresCasillas, y otra para la configuración del borde, llamada TBordeTablero, tal y como podéis ver en el siguiente listado:

  TColoresCasillas = class(TPersistent)
   private
      FTablero: TTablero;
 
      FCasillasBlancas: TColor;
      FCasillasNegras: TColor;
 
      procedure SetCasillasBlancas(value: TColor);
      procedure SetCasillasNegras(value: TColor);
 
   public
      constructor Create(tablero: TTablero);
 
   published
      property CasillasBlancas: TColor 
               read    FCasillasBlancas 
               write   SetCasillasBlancas 
               default clWhite;
 
      property CasillasNegras: TColor 
               read    FCasillasNegras 
               write   SetCasillasNegras 
               default clBlack;
   end;
 
 
   TBordeTablero = class(TPersistent)
   private
      FTablero: TTablero;
 
      FMostrar: boolean;
      FColor: TColor;
 
      procedure SetMostrar(value: boolean);
      procedure SetColor(value: TColor);
   public
      constructor Create(tablero: TTablero);
   published
      property Mostrar: boolean 
               read    FMostrar 
               write   SetMostrar 
               default true;
 
     property Color:  TColor 
              read    FColor 
              write   SetColor 
              default clBlack;
   end;
 
 

Ya en el componente TTablero, simplemente debemos definir dos propiedades, una para cada clase que acabamos de crear, y automáticamente, el Inspector de Objetos mostrará las propiedades agrupadas, tal y como podéis ver en la imagen de la derecha.

Uno de los detalles más importantes es la codificación de los métodos de escritura de las propiedades. Cuando somos los responsables del dibujado del componente, el cambio del valor de algunas propiedades provocan que el aspecto del componente cambie. Para ello, debemos lanzar la operación de pintado cuando el valor de la propiedad cambie, por ejemplo: cuando se cambie el color que debemos utilizar para pintar las casillas. Para lanzar esta operación, debemos hacer uso del método Invalidate, que viene heredado de TControl. Con este método, provocado un repintado completo del componente, llamándose al método Paint, y lanzándose así todo el código que hemos escrito para dibujar en la pantalla. Podéis ver cómo se llama a este método en el siguiente listado:

  procedure TColoresCasillas.SetCasillasBlancas(value: TColor);
   begin
      if value <> FCasillasBlancas then
      begin
         FCasillasBlancas := value;
         FTablero.Invalidate;
      end;
   end;
 
 

Es conveniente utilizar este método con cautela, ya que cada vez que se llame provocaremos un repintado del componente, aunque varias llamadas consecutivas desembocarán en un único repintado. En el último listado, podéis ver un ejemplo en que evitamos el uso de Invalidate, en un caso en que es suficiente pintar el borde, y no el componente completo.

  procedure TBordeTablero.SetMostrar(value: boolean);
   begin
      if value <> FMostrar then
      begin
         FMostrar := value;
 
         if FMostrar then
            FTablero.DibujarBorde(FColor) // sólo se dibuja el borde
         else
            FTablero.Invalidate; // se dibuja todo
      end;
   end;
[editar]

4 opiniones

que son graficos

son tipos de diseños utilizados para crar todo tipo de dibujo en ciertas ocaciones
Internet y componentes graficos.

Dssearía más información, se me queda mu corta, desarrollo, programas, tutoriales, ejemplos... Juandon.
Que son ventanas.

Quiero que me manden la informacion es el area de informatica.
Componente graficos canvas.

Es resumido y exacto para mi gusto... Muy bueno.

Cursos gratis relacionados con 'Creación de componentes VCL: Componentes gráficos'

Un repaso a los componentes gráficos, aquellos en los que nos tenemos que encargar de... Más »
Vamos a profundizar algo más en la programación de componentes, centrándonos en los eventos y... Más »
Ahora que ya sabemos programar nuestros componentes no visuales, vamos a aprender todo lo necesario... Más »
En los últimos años, el desarrollo basado en componentes se ha convertido en una de... Más »
En los últimos años, el desarrollo basado en componentes se ha convertido en una de... Más »

Autor y licencia de 'Creación de componentes VCL: Componentes gráficos'


Curso gratis de José Manuel. Extraido de: http://www.lawebdejm.com CopyLeft
Este contenido ha sido recopilado por el equipo de Wikilearning. Todo el contenido recopilado se ha obtenido respetando y comunicando en nuestro site la licencia de cada fuente.
Wikilearning tiene permiso expreso por escrito de los autores para publicar los contenidos que ha extraído de otras webs, incluyendo su uso comercial.