Pregunta ¿De algún modo, la mezcla accidental de TEdit.Text y TLabel.Caption funciona sin excepción?


Estoy trabajando para crear dinámicamente varios tipos diferentes de controles y almacenarlos en una lista en segundo plano. Dos de estos controles son un TEdit y un TLabel. Estos controles son todos subcontroles de un control TPanel.

Bueno, accidentalmente mezclé TEdit con TLabel al leer de TPanel.Controls (los obtuve de los índices incorrectos) al escribir en las propiedades TEdit.Text y TLabel.Caption. De alguna manera, ni siquiera planteó ninguna excepción.

Hace algo como TLabel(SomeEditControl).Caption:= 'This is a label control'; y TEdit(SomeLabelControl).Text:= 'This is an edit control'; Y coloca los datos TEdit.Text en la propiedad TLabel.Caption, y los datos TLabel.Caption en la propiedad TEdit.Text. Estoy sorprendido de que esto no haya generado una excepción ... Lo único que puedo adivinar es que las propiedades TEdit.Text y TLabel.Caption simplemente usan la misma dirección de memoria entre las clases de control.

¿Por qué esto no daría una violación de acceso?


5
2017-12-18 23:18


origen


Respuestas:


los TEdit.Text viene de TControl.Text, y el TLabel.Caption viene de TControl.Caption. Pero mira la declaración de TControl:

...
property Caption: TCaption read GetText write SetText stored IsCaptionStored;
...
property Text: TCaption read GetText write SetText;
...

Un control que tiene un texto asociado lo gestiona a través del SetText y GetText métodos. Según el tipo de control, estos se asocian con el Caption o el Text propiedad. Desde el documentación,

Nota: Los controles que muestran texto usan la propiedad Título o   la propiedad Text para especificar el valor del texto. La propiedad que se utiliza.   depende del tipo de control. En general, Caption se usa para texto   que aparece como un título o etiqueta de ventana, mientras que Texto se usa para texto   que aparece como el contenido de un control.


9
2017-12-18 23:28



Ambos se derivan de la clase de control y el valor de acceso de ambas propiedades a través del mismo nivel alcanzado.


1
2017-12-19 02:47