何らかの形で誤ってTEdit.TextとTLabel.Captionを混在させても例外なく動作しますか?

私は、複数の異なるタイプのコントロールを動的に作成し、それらをバックグラウンドのリストに格納する作業をしています。そのようなコントロールのうちの2つは、TEditとTLabelです。これらのコントロールは、すべてTPanelコントロールのサブコントロールです。

私は誤って、TEdit.TextとTLabel.Captionプロパティに書き込むときに、TPanel.Controlsから読み取るときに誤ったインデックスから取得したときに、TEditをTLabelと混同しました。どういうわけか、それはどんな例外も発生させませんでした。

これは TLabel(SomeEditControl).Caption:= 'これはラベルコントロールです'; TEdit(SomeLabelControl).Text:= 'これは編集コントロールです'; そして、TEdit.TextデータをTLabel.Captionプロパティに置き、TLabel.CaptionデータをTEdit.Textプロパティに配置します。私はこれが例外を発生させなかったことに困惑しています...私が推測できる唯一のことは、TEdit.TextとTLabel.Captionプロパティはコントロールクラス間で同じメモリアドレスを使用することです。

なぜこれがアクセス違反にならないのでしょうか?

5
@AndreasRejbrandそれは良い可能性です、TEdit.TextとTLabel.Caption私はWindowText
追加された 著者 Jerry Dodge,
それらはすべて、 WindowText プロパティを持つ TControl に由来します。 (ただ推測する...)
追加された 著者 Andreas Rejbrand,
真実。下記参照。
追加された 著者 Andreas Rejbrand,

2 答え

TEdit.Text TControl.Text に由来し、 TLabel.Caption TControl.Caption に由来します。しかし、 TControl の宣言を見てください。

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

それに関連付けられたテキストを持つコントロールは、 SetText および GetText メソッドを介してそれを管理します。コントロールのタイプに応じて、これらは Caption または Text のいずれかのプロパティに関連付けられます。 ドキュメントから、

注:テキストを表示するコントロールでは、Captionプロパティまたは   テキスト値を指定するTextプロパティ。使用されるプロパティ   制御のタイプに依存する。一般に、テキストにはキャプションが使用されます   ウィンドウタイトルまたはラベルとして表示され、テキストはテキストとして使用されます   コントロールの内容として表示されます。

9
追加された
FireMonkeyの@GolezTrolは、VCLに基づいて「削除された」または「追加された」ものはありませんでした。代わりに、FireMonkeyはまったく新しい生のシステムで、OOPをベースにしたものではありません。しかし、私はあなたのことを理解しています。 FMには多くの「相違」がありますが、必ずしもVCLからの「変更」である必要はありません。
追加された 著者 Jerry Dodge,
@David:実際には FText です。 SetText を見てください。 (でも、あなたは正しい。主要な部分はこれらのメッセージに基づいているようだ。)
追加された 著者 Andreas Rejbrand,
@デイビッド:はい、私は私の答えを改訂しました。
追加された 著者 Andreas Rejbrand,
FText WM_GETTEXT 、+1
追加された 著者 David Heffernan,
FTextは、GetText、SetTextなどを読み込んだときにのみCLRで使用されていたようです。
追加された 著者 David Heffernan,
またはこれらのプロパティの設定者として WM_SETTEXT を選択します。 + 1ed、あなたはもっと速かった;)
追加された 著者 TLama,
それがFireMonkeyのCaptionを削除した理由でしょう。すべてのコントロールにTextプロパティがあります(フォームを除いて単純です)。
追加された 著者 GolezTrol,

両方ともコントロールクラスから派生しており、両方のプロパティは同じmet

1
追加された