Estoy trabajando con la creación dinámica de diferentes tipos de controles y su almacenamiento en una lista en segundo plano. Dos de tales controles son un TEdit y un TLabel. Estos controles son todos subcontroles de un control TPanel.De alguna manera, mezcla accidentalmente TEdit.Text y TLabel.Caption funciona sin excepción?
Bueno, accidentalmente mezclé el TEdit con TLabel cuando leía 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.
Se hace algo como TLabel(SomeEditControl).Caption:= 'This is a label control';
y TEdit(SomeLabelControl).Text:= 'This is an edit control';
Y pone los datos TEdit.Text en la propiedad TLabel.Caption, y los datos TLabel.Caption en la propiedad TEdit.Text. Me sorprende que esto no haya provocado una excepción ... Lo único que puedo adivinar es que las propiedades TEdit.Text y TLabel.Caption usan la misma dirección de memoria entre las clases de control.
¿Por qué esto no daría una infracción de acceso?
Todos ellos descienden de 'TControl' que tiene una propiedad' WindowText'. ( Simplemente adivinando ...) –
@AndreasRejbrand Esa es una buena posibilidad, TEdit.Text y TLabel.Caption Supongo que traducir al WindowText –
True. Vea abajo. –