Creación de componentes VCL: Componentes visuales - Definiendo el interfaz del componente

5 - Definiendo el interfaz del componente

[editar]
Curso gratis creado por José Manuel. Extraido de: http://www.lawebdejm.com
30 de Noviembre de 1999
Ahora que ya sabemos quien va a ser el padre de nuestro componente, tenemos que decidir qué propiedades y eventos vamos a proporcionar a nuestros usuarios del componente.
A priori parecen interesantes o necesarias las siguientes:

  • CarpetaRaiz: se trata de una cadena que contendrá la carpeta a partir de la que se creará el árbol de directorios. Puede ser la carpeta raíz de una unidad de disco (p.e. “C:\”) para mostrar los directorios de todo la unidad, o bien una carpeta cualquiera, para mostrar las subcarpetas de esta. Un caso especial se dará cuando esta propiedad contenga el valor “Mi PC”, con en el que mostraremos cada una de las unidades disponibles en nuestro sistema, pudiendo expandir estas unidades para mostrar sus carpetas.
  • CarpetaActual: es un valor de tipo cadena que contiene la ruta de la carpeta seleccionada en el árbol. Si, por ejemplo, tenemos seleccionada la carpeta de primer nivel "Datos", y el nodo raíz es “C:\Temporal”, esta propiedad contendrá el valor “C:\Temporal\Datos”. También se puede modificar su valor, seleccionándose en ese caso el nodo correspondiente en el árbol (si el valor establecido es correcto).
  • MostrarPadre: es un valor booleano (true o false) que nos permite configurar la aparición o no del nodo padre. Es decir: si en la propiedad “CarpetaRaiz” hemos introducido el valor “C:\Delphi”, en el árbol aparecerá un nodo raíz llamado “Delphi”, y colgando de él, todas las demás subcarpetas. Si establecemos esta propiedad a falso, el nodo raíz desaparecerá, mostrándose todas las subcarpetas en un primer nivel, sin colgar de ningún nodo padre.

Bueno, creo que con esto puede ser suficiente para tener un componente bastante versátil.
Un primer esqueleto del componente podría ser el que vemos en el siguiente listado:

TCustomArbolDirectorios = class(TCustomTreeView) private FMostrarPadre: boolean; FCarpetaRaiz: string; procedure SetMostrarPadre(value: boolean); procedure SetCarpetaRaiz(value: string); function GetCarpetaActual: string; protected property MostrarPadre: boolean read FMostrarPadre write SetMostrarPadre; property CarpetaRaiz: string read FCarpetaRaiz write SetCarpetaRaiz; property CarpetaActual: string read GetCarpetaActual; public constructor Create(AOwner: TComponent); override; end;

Si lo estudiamos detenidamente, veremos que hemos heredado nuestra clase de TCustomTreeView (por las razones que ya hemos explicado), definiendo las propiedades que acabamos de mencionar, así como los correspondientes métodos de lectura (Get) y escritura (Set). Es estos métodos de escritura, haremos las validaciones correspondientes, como por ejemplo, verificar que la carpeta exista.
Y por último, ¿alguien se ha fijado en el nombre que le he dado a la clase del nuevo componente? ¿TCustomArbolDirectorios? ¿No dijimos que iba a llamarse TArbolDirectorios? Pues sí, pero he aplicado el mismo patrón de diseño que utiliza Borland para la VCL. En nuestra clase "Custom", definiremos toda la lógica de nuestro componente, sin publicar ninguna propiedad ni evento, y más tarde definiremos la clase definitiva (TArbolDirectorios) que simplemente publicará las propiedades que consideremos oportunas, tanto de TCustomTreeView como de TCustomArbolDirectorios. Podéis ver el esqueleto de TArbolDirectorios en el siguiente listado:

TArbolDirectorios = class(TCustomArbolDirectorios) published propiedades heredadas de TCustomTreeView property AutoExpand; property BorderStyle; property HotTrack; property Images; property ReadOnly; property RightClickSelect; eventos heredados de TCustomTreeView property OnChange; property OnChanging; property OnCollapsed; property OnCollapsing; property OnDeletion; property OnEditing; property OnEdited; property OnExpanding; property OnExpanded; property OnGetImageIndex; property OnGetSelectedIndex; propiedades heredadas de TCustomArbolDirectorios property MostrarPadre; property CarpetaRaiz; property CarpetaActual; end;
[editar]

3 opiniones

Manual.

Holas necesito un manual de delphi estoy estudiando y me interesa a prender delphi y mas que nada por que me piden hacer un proyecto en este lenguaje ojala que me puedan ayudar de ante manos muchisimas agracias ojala q me puedan ayudar lo antes posible.
Mis iconos visuales.

Por favor quiero tener iconos en mi email.
Hola.

Esta bueno a primera vista me queda estudiarloa fondo.

Cursos gratis relacionados con 'Creación de componentes VCL: Componentes visuales'

En los últimos años, el desarrollo basado en componentes se ha convertido en la técnica... Más »
Ahora que ya sabemos programar nuestros componentes no visuales, vamos a aprender todo lo necesario... Más »
Un repaso a los componentes gráficos, aquellos en los que nos tenemos que encargar de... 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 visuales'


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.