Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros temas > Trucos
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Los mejores trucos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 30-06-2006
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: Jul 2004
Ubicación: Barcelona - España
Posts: 15.547
Poder: 10
Neftali [Germán.Estévez] Tiene un aura espectacularNeftali [Germán.Estévez] Tiene un aura espectacular
Ahorrando espacio con las etiquetas

La ventana típica de una típica aplicación para bases de datos contiene montones de controles de edición, quizás organizados por páginas, si el programador ha sido misericordioso con sus usuarios ... y decenas de inertes etiquetas de texto que se asocian a dichos controles para hacer mínimamente comprensible su significado.

Este truco puede ayudarle a ganar espacio y a hacer más legible el código fuente:

EL GRAN TRUCO DE LAS ETIQUETAS
Elimine el nombre de todos sus componentes TLabel. Una por una, seleccione las etiquetas existentes y, con la ayuda del Inspector de Objetos, borre el contenido de la propiedad Name.

¿Qué ganamos con ésto?
Vaya al código fuente del formulario después de realizar la transformación. Notará que, en la declaración de la clase del formulario ya no aparecen las declaraciones correspondientes a las etiquetas. Esto implica que ya no podremos modificar en tiempo de ejecución las características de estos componentes, pero ¿a quién le importa eso? En compensación, un listado impreso del código fuente se acorta en un número de líneas idéntico al número de TLabels que han perdido su honor en el proceso. Desde mi punto de vista ésta es la principal ventaja del truco.

Pero hay más: también se gana espacio en el fichero DFM. Antes de aplicar el truco, cada etiqueta comenzaba su declaración dentro del DFM más o menos de este modo:

Código Delphi [-]
  object Label1: TLabel
    Left = 164
    Top = 108
    Width = 32
    Height = 13
    Caption = 'Indice de Mala Leche Equivalente (%):'
  end

Ahora la declaración se queda así:

Código Delphi [-]
  object TLabel
    Left = 164
    Top = 108
    Width = 32
    Height = 13
    Caption = 'Indice de Mala Leche Equivalente (%):'
  end

Nos hemos ahorrado tantos bytes como caracteres tenía el nombre de la etiqueta. Por supuesto, da lo mismo que el fichero DFM esté en formato binario o en el formato de texto de Delphi 5.

Cuando creemos la ventana en tiempo de ejecución también estaremos ahorrando espacio. Aunque muchos programadores prefieren ignorarlo, lo cierto es que el contenido de las propiedades Name de sus componentes existe también en tiempo de ejecución; he ahí la importancia de evitar componentes con nombres como ElCabronDeFulano ó QueBuenaEstaMengana. ¿Una etiqueta sin nombre? Espacio ahorrado en tiempo de ejecución.

Sin embargo, hace poco me di cuenta que hay una pequeña ganancia adicional en espacio que muchas veces ignoramos; este "descubrimiento" me ha impulsado a escribir este truco. Primero una pregunta. Observe la siguiente declaración, y dígame a qué sección (private, protected o public) cree usted que pertenece la declaración de la etiqueta:

Código Delphi [-]
type
  TForm1 = class(TForm)
    Label1: TLabel;
  private
    { Private declarations }
  public
    { Public declarations }
  end;

Pues ni pública ni privada ni protegida: la sección que sigue inmediatamente a la palabra class ¡es published! Y las declaraciones en published generan estructuras de datos asociadas a la clase que también ocupan espacio en tiempo de ejecución. No sólo ahorraremos este espacio, sino que también aceleraremos algo la carga de la ventana y la asociación de objetos persistentes a los campos de la clase del formulario.

ADVERTENCIA PARA EL GRAN TRUCO DE LAS ETIQUETAS
En algún punto del programa, preferiblemente en el fichero de proyecto, antes de comenzar la carga de ventanas, llame a la función RegisterClasses, mencionando todas las clases de componentes que han perdido su nombre y su alma.

Este punto es muy importante. Si todas las referencias a la clase TLabel desaparecen del código fuente de nuestro proyecto, el enlazador inteligente de Delphi llegará a la conclusión de que no necesita incluir el código binario correspondiente en el ejecutable. La llamada a RegisterClasses evita el problema.

Tome nota de que, aunque durante toda esta página me he referido a la clase TLabel, todo lo dicho se aplica también a otras clases "pasivas" como TBevel, TPanel, e incluso a determinados TDBEdit.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 12:47:53.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi