Pracuję z dynamicznym tworzeniem wielu różnych typów kontrolek i przechowywaniem ich na liście w tle. Dwie z takich kontroli to TEdit i TLabel. Te kontrole są wszystkimi podrzędnymi kontrolami kontrolki TPanel.Jakoś przypadkowo mieszanie TEdit.Text i TLabel.Caption działa bez wyjątku?
Cóż, przypadkowo pomieszałem TEdit z TLabelem podczas odczytu z TPanel.Controls (otrzymałem je z niewłaściwych indeksów) podczas zapisu do właściwości TEdit.Text i TLabel.Caption. Jakoś nie podniosło to żadnego wyjątku.
To coś w rodzaju TLabel(SomeEditControl).Caption:= 'This is a label control';
i TEdit(SomeLabelControl).Text:= 'This is an edit control';
I umieszcza dane TEdit.Text we właściwości TLabel.Caption, a dane TLabel.Caption we właściwości TEdit.Text. Jestem zaskoczony, że to nie podniosło wyjątku ... Jedyne, co mogę się domyślić, to to, że właściwości TEdit.Text i TLabel.Caption tak samo używają tego samego adresu pamięci między klasami kontrolnymi.
Dlaczego nie miałoby to spowodować naruszenia zasad dostępu?
Wszyscy pochodzą od 'TControl' który ma właściwość' WindowText'. ( Po prostu zgaduję ...) –
@AndreasRejbrand Jest to dobra możliwość, TEdit.Text i TLabel.Caption Zakładam, że tłumaczę na WindowText –
True. Zobacz poniżej. –