コンポーネントの初期引数


長谷  2005-01-08 09:47:58  No: 12613

タイトルはもしかするとふさわしくないかもしれませんので、参考にしない方がよいかもしれません。

本題ですが、大体のコンポーネントは、コンストラクタ時に引数として、Ownerをもらっているようなのですが、普通にフォーム上にコンポーネントを貼り付けた場合、Ownerはなにになっているのでしょうか?

または、Ownerに限らず、引数がなにになっているのか、なぜその引数になるのかまどを教えていただいても幸いです。
まことに身勝手ながら、ご教授よろしくお願いします。


長谷  2005-01-08 09:48:36  No: 12614

または、Ownerに限らず、引数がなにになっているのか、なぜその引数になるのかまどを教えていただいても幸いです。

または、Ownerに限らず、引数がなにになっているのか、なぜその引数になるのかなどを教えていただいても幸いです。


みんみん  2005-01-08 10:16:51  No: 12615

VCL リファレンス
TComponent.Create  を参照しましょう。

ついでに、付属のコンポーネント開発者ガイドを、一読することをおすすめします。

自分で簡単なコンポーネント作って試して理解するのが一番です。


Mr.XRAY  URL  2005-01-08 20:41:27  No: 12616

質問に対する解決になるかはわかりませんが,
Ownerは文字どおりオーナーです.ヘルプで「 コンポーネントとオーナー」
「 親プロパティ」を調べると理解が深まるかも知れません.

以下は,引数であるOwnerの動作を調べる簡単なコードです.
新規プロジェクト(必ず新規です)に,LableとButtonを2つ配置します.

このプログラムでは,Button1をクリックすると,OwnerがAFormである
ボタンを作成します.
ただし,親はForm1としているので,AButtonはForm1に表示されます.

Button2をクリックすると,作成したAButtonのOwnerがいなくなりま
すので,AButtonも消えてなくなります.
また,Button1のOwnerをLabelに表示します.

var
    AForm: TForm;
    AButton: TButton;

procedure TForm1.Button1Click(Sender: TObject);
begin
     Label1.Caption:=Button1.Owner.Name;
     AForm:=TForm.Create(Form1);
     AButton:=TButton.Create(AForm);
     AButton.Width:=150;
     AButton.Caption:='OwnerがAFormのボタン';
     AButton.Parent:=Form1;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
     AForm.Free;
     AForm:=nil;
end;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加