Delphiで公開

Delphiのクラスの公開属性は、属性リストで表示および使用できる属性です

公開メンバー(公開)とパブリックメンバー(パブリック)は同じ可視性を持っていますが、公開されたステートメントはプロパティバーに表示されますが、パブリックは表示されません!

    publishedとpublicのアクセス制限属性は同じですが、publishedは一般にコンポーネントプログラミングで使用され、アプリケーションではあまり使用されません。

OBJECT PASCALからの転送

     「公開されたメンバーとパブリックメンバー(パブリック)は同じ可視性を持っています。違いは、公開されたメンバーに対して生成されたランタイム情報RTTI(ランタイムタイプ情報)です。RTTIにより、アプリケーションはオブジェクトのドメインと属性を動的にクエリし、オブジェクトを見つけることができますRTTIのメソッドは、次の状況でプロパティの値にアクセスするために使用されます。ファイルを保存およびロードするとき、オブジェクトインスペクター(オブジェクトインスペクター)でプロパティを表示するとき、指定されたメソッド(つまりイベントハンドラー)および指定されたプロパティ(つまりイベント)。

    広告属性は特定のデータタイプに制限されています。序数、文字列、クラス、インターフェイス、メソッドポインタなどの型を公開できます。提供されている基本型は、上限と下限に序数の値が0〜31のコレクション型でも公開できることがわかります。つまり、コレクションはバイト、ワード、またはダブルワード(バイト、ワード、またはダブルワード); Real48を除き、任意の実数型を公開できます。配列型のプロパティ(下記の配列プロパティとは異なります)は公開できません。

 

RTTIを使用して、すべてのパブリッシュされた属性
var
mTypeInfo:PTypeInfoを取得できます。
mTypeData:PTypeData;
mPropList:PPropList;
mPropInfo:PPropInfo;
mPropCount、i:整数。mTypeInfo:= Form1.ClassInfo;を
開始し
ます。

mTypeData:= GetTypeData(mTypeInfo);
mTypeInfo ^ .Kind <> tkClassの場合は終了します。

mPropCount:= mTypeData ^ .PropCount;
mPropCount <= 0の場合は終了します。

GetMem(mPropList、mPropCount * SizeOf(PPropList)); GetPropInfos(mTypeInfo、mPropList);を
試してください

for i:= 0 to mPropCount-1 do
begin begin
mPropInfo:= mPropList ^ [i];
ShowMessage(mPropInfo ^ .Name);
終わり;
最後に
FreeMem(mPropList、mPropCount * SizeOf(PPropList));
終わり;
終わり; 

 

 

TForm1 = class(TForm)の下には、Button1変数とButton1Clickメソッドがさらにあり、これらは実際に公開された型です。クラスまたは親クラスが "{$ M +}"コンパイル命令を使用する場合、デフォルトは公開されたメンバーです。公開されたメンバーはオブジェクトインスペクターで確認できます。手動でコードを追加できます。

タイプ

  TForm1 = class(TForm)

  公開された

    Button1:TButton;

    プロシージャButton1Click(Sender:TObject);

  民間

    プロシージャPriShowMsg();

    {プライベート宣言}

  公衆

    プロシージャPubShowMsg();

    {公の宣言}

  終わり;

上記のメソッドを実装で定義します。

プロシージャTForm1.PriShowMsg;

ベギン

  ShowMessage( 'プライベートメソッドコール');

終わり;

 

プロシージャTForm1.PubShowMsg;

ベギン

 

ShowMessage( '公開メソッド呼び出し');

終わり;

Button1のOnClickイベントメソッドで上記の2つのメソッドを呼び出します。

プロシージャTForm1.Button1Click(Sender:TObject);

 ベギン

   PriShowMsg;

   PubShowMsg;

終わり;

おすすめ

転載: www.cnblogs.com/QuincyYi/p/12729143.html
おすすめ