2010-03-19 10 views
30

Hemos notado que al registrar actualizaciones, nuestros archivos .DFM tienen propiedades ExplicitWidth y ExplicitHeight agregadas por lo que parece no ser un motivo en particular.Delphi: ¿Por qué ExplicitWidth y ExplicitHeight siguen apareciendo en archivos .DFM y qué es?

Mis dos preguntas son: ¿para qué sirven y por qué se agregan automáticamente por Delphi?

A continuación se muestra un ejemplo con el establecimiento con:

object Splitter2: TcxSplitter 
    Left = 0 
    Top = 292 
    Width = 566 
    Height = 8 
    Cursor = crVSplit 
    HotZoneClassName = 'TcxXPTaskBarStyle' 
    AlignSplitter = salBottom 
    Control = BottomPanel 
    Color = clBtnFace 
    ExplicitWidth = 8 
end 
+0

Lo que hace el Delphi documentación dice? : P – mjn

+13

¿Estás sugiriendo seriamente que tengo RTFM? Ahora, ¿dónde está la diversión en eso? Y debería agregar que estoy usando Delphi 2007, así que todavía estoy * esperando * a que se cargue * Help *. ¡Pensé que sería más rápido preguntar en Stack Overflow! – Pauk

+1

@Mjustin, la ayuda dice esto: * ExplicitWidth es una propiedad de solo lectura utilizada internamente por Delphi. Utilice el ancho en las aplicaciones, lo que permite el acceso de lectura y escritura. * Http://docwiki.embarcadero.com/VCL/en/Controls.TControl.ExplicitWidth –

Respuesta

22

De buscar en Google ....

Original article can be found here.

Las propiedades explícitos recordar los límites anteriores de un control antes de las propiedades alinear o de anclaje se cambiados de sus valores predeterminados.

La única vez que las propiedades explícitos no se escriben es cuando el propiedad Align se establece de nuevo a su valor por defecto de alNone.

Esto es cuando las propiedades explícitos son realmente usados ​​por el control de restablecer sus límites a lo que era anteriormente.

+2

Son las dimensiones que * explícitamente * les dio, a diferencia de las dimensiones que adquirieron * implícitamente * debido a la alineación o el anclaje. No son necesariamente las dimensiones * originales *, que podría haber cambiado entre el momento en que creó el control y el momento en que establece su alineación. –

+11

Esto suena plausible, pero no es lo que realmente sucede: en mi experiencia, Delphi IDE cambia entre almacenar los mismos valores en Izquierda/Derecha/Ancho/Altura y sus contrapartidas de ExplicitXxx cada vez que se escribe el formulario en .dfm. Lo mismo se aplica a la propiedad ItemHeight de un TComboBox que cambia entre 0 y 13 y vuelve todo el tiempo. Se vuelve bastante molesto cuando mi control de fuente quiere publicar cambios en el .dfm todo el tiempo cuando nada realmente ha cambiado. – dummzeuch

+4

@dummzeuch muchas versiones de Delphi muestran el comportamiento que mencionas. Es irritante ya que satura las diferencias en el historial de control de versiones. –

0

Delphi añade valor de las propiedades publicadas en el archivo DFM sólo cuando su valor diferente del predeterminado.

Por ejemplo:

property ExplicitWidth: Integer read FExplicitWidth write FExplicitWidth default 1;

Si el valor no es ExplicitWidth 1 a continuación, se escriben en el DFM. Cuando el "predeterminado" no está definido, cualquier valor se escribirá en el DFM.

TcxSplitter no es un componente estándar de Delphi, es mejor que pregunte a su autor sobre el propósito de las propiedades.

+5

Acabo de enumerar TcxSplitter como un ejemplo que tuve que entregar. Lo más común sucede con TForm. – Pauk

29

Con DDevExtensions que puede deshabilitar el almacenamiento de estas propiedades en el DFM:
http://andy.jgknet.de/blog/?page_id=10

Añade explícita * removedor de propiedad para mantener los archivos DFM compatible con versiones anteriores de Delphi

+8

+1. No lo uso por razones de compatibilidad sino solo para mantener mis DFM más pequeños y el control de fuente menos abarrotado. –

+3

Me gusta esto, ya que, al igual que Ulrich, elimina el problema de las actualizaciones de código fuente. ¡Ojalá pudiera dividir la respuesta entre esto y la respuesta de James B.! – Pauk

+0

Lo que pasa es que a menos que todos los que editen su dfm tengan DDevExtensions instalado también, y la opción activada, terminará con más diferencias cada vez que guarden el archivo. – SoftDeveloper

Cuestiones relacionadas