Ir al contenido


Foto

Componente TComponentConcealer


  • Por favor identifícate para responder
1 respuesta en este tema

#1 andres1569

andres1569

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 431 mensajes

Escrito 25 marzo 2011 - 01:43

Hola:

Antes que nada, no os asustéis por el nombre, es algo rarito  *-) ;)  , estuve buscando una palabra en inglés que significara "escondedor" u "ocultador", y me salió esa, "Concealer", pensaba que habría otra derivada de "hide" (esconder), pero no.

El componente en cuestión es muy sencillo, después de darle algunas vueltas a lo planteado por Marc en este hilo, se me ocurrió hacer esta chapucilla. El componente sirve para ocultar de un formulario al resto de componentes no visuales (salvo él mismo que se mantiene visible). Basta con cambiar su propiedad Hidden a TRUE o FALSE para que los componentes no visuales desaparezcan o vuelvan a aparecer (esto se logra accediendo a la propiedad DesignInfo de la clase TComponent, una propiedad que Delphi emplea precisamente para almacenar la posición de dichos componentes, que no poseen propiedades Left ni Top). Posee una propiedad FromTag que puede ser útil para filtrar qué componentes queremos ocultar o no (se ocultan aquellos cuya propiedad Tag sea igual o mayor).

Entiendo que lo ideal y elegante es que estas acciones se desarrollen desde el IDE, mediante expertos por ejemplo, y no tener que incluir un componente más sólo para algo como esto, pero sirva el experimento para otras posibles ampliaciones incluso para en el futuro implementarlo como un experto.

Le he implementado, además, un hook de teclado para facilitar el mecanismo, el cual mediante la pulsación de las teclas Alt + F10 realiza lo mismo que si cambiáramos la propiedad Hidden desde el Object Inspector. Esa combinación de teclas se emplea en Delphi para mostrar el menú contextual, y he pensado que no sería muy frecuente su uso (desde teclado me refiero), por lo que cuando se emplee en un formulario que contenga este componente, quedará sin efecto.

Está probado en Delphi 4 y en Delphi 2010, y también testeado en formularios heredados, supongo que no os dará problemas en otras versiones.

Saludos

Archivos adjuntos


  • 0

#2 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.142 mensajes
  • LocationMéxico

Escrito 25 marzo 2011 - 02:36

Caramba amigo Andrés, muy interesante (y)

Salud OS
  • 0