我正在動態創建多種不同類型的控件,並將它們存儲在背景中的列表中。其中兩個控件是TEdit和TLabel。這些控件都是TPanel控件的子控件。不知怎的,意外混合TEdit.Text和TLabel.Caption無一例外地工作?
嗯,當寫入TEdit.Text和TLabel.Caption屬性時,我從TPanel.Controls(從錯誤的索引中獲取它們)讀取時,意外地將TEdit與TLabel混合在一起。不知何故,它甚至沒有提出任何例外。
它執行類似於TLabel(SomeEditControl).Caption:= 'This is a label control';
和TEdit(SomeLabelControl).Text:= 'This is an edit control';
而且它將TEdit.Text數據放入TLabel.Caption屬性中,並將TEabel.Caption數據放入TEdit.Text屬性中。我很困惑,這沒有引發異常......我唯一能猜到的是,TEdit.Text和TLabel.Caption屬性恰好在控件類之間使用相同的內存地址。
爲什麼這不會給訪問衝突?
他們都下降。 ( 只是猜測...) –
@AndreasRejbrand這是一個很好的可能性,TEdit.Text和TLabel.Caption我認爲確實轉化爲WindowText –
真。見下文。 –