プログラムからボタンをつくるには

解決


Troki  2004-03-04 05:26:26  No: 7545

RADツールからではなくプログラムからボタンを配置させたいのですが
宣言や実際に配置する命令はどのようにすればよいのでしょうか.

webの情報にはRADツールでの説明が多いのでわからない状態です.
どなたかよろしくお願いします.


jok  2004-03-04 05:48:22  No: 7546

ちょっとまえに書きました。

https://www.petitmonte.com/bbs/answers?question_id=1358


るるとん@K  2004-03-04 05:52:32  No: 7547

begin
with tbutton.create(self) do
begin
parent:=self//何の中にあるか
name:=mybutton1;//名前をつける
left,top,width,height,caption等設定
end;
end;


jok  2004-03-04 07:07:31  No: 7548

> るるとん@K さんへ

with を使うと、あとでインスタンスを参照できなくなるんでは?

> name:=mybutton1;//名前をつける

名前をつけるのはどうしてですか? それに上の文ではコンパイルできませんが。


Troki  2004-03-04 08:03:13  No: 7549

過去ログは調べたつもりでしたが足りなかったみたいです.
jokさんの方法で解決できそうです.
これならボタン以外のコンポーネントにも使えますね.

文中の'self'というのは知らなかったです.
一応Createとかすればいいのかな,と考えていたのですが,引数に
何を記述すればいいのかわからず困っていたのです.
ホントにありがとうございます.


るるとん@K  2004-03-04 08:08:39  No: 7550

上の文はサンプルソースではなく処理の流れを示したもので、
「left,top,width,height,caption等設定」
をそのままコンパイルするわけじゃありません
>名前をつけるのはどうしてですか?
作成後もボタンは使用します
showmdal等でなければ、作成したボタンをその手続き内で解放したら意味が無いのでは?
>あとでインスタンスを参照できなくなるんでは?
この場合、mybutton1で参照できるのでは?


るるとん@K  2004-03-04 08:16:24  No: 7551

>>名前をつけるのはどうしてですか?
>作成後もボタンは使用しますshowmdal等でなければ、作成したボタンをその手続き内で解放したら意味が無いのでは?
少し間違えました。変数を使うわけですね。
しかし特にどちらでも構わないのでは?
変数に代入するのではなく、名前を付ければ、
作成する数が決まっていない時に、
数字と組み合わせた名前を付けたりできるわけです


jok  2004-03-04 08:46:13  No: 7552

> この場合、mybutton1で参照できるのでは?

mybutton1 ってなんの型ですか? name に代入してるのですから string 型です
よね? string 型でどうやって TButton のオブジェクトを参照するつもりですか。

名前 name プロパティーは、単なる文字列です。これでは直接コンポーネントを
参照することはできませんよ。動的に作成したコンポーネントに名前をつけること
と、解放するとかしないとかは全く関係ありません。

例に挙げたとおり、

Button:TButton

とインスタンス変数を宣言しておき

Button := TButton.Create(self);

と代入しておくのが普通では。Name に代入した文字列だけで参照するには
FindComponent() をつかって TButton にキャストする必要があります。


Mr.XRAY  URL  2004-03-04 08:49:33  No: 7553

>の場合、mybutton1で参照できるのでは?

Nameはプロパティですね.NameプロパティではButtonのインスタンスは
参照できませんよ.


Mr.XRAY  URL  2004-03-04 08:55:57  No: 7554

>Nameはプロパティですね.NameプロパティではButtonのインスタンスは
>参照できませんよ.

jokさんが書かれている通り,キャストすれば別ですが,わざわざ
そんなことしなくても...  ねっ.


  2004-03-04 21:23:43  No: 7555

TButton(mybutton1)


つっか  2004-03-04 22:16:03  No: 7556

文字列を TButton でキャストですか? 
なにをしたいんでしょうか?


jok  2004-03-04 22:36:18  No: 7557

えと、コンポーネントパレットからフォームにポトペタで生成されるコンポーネント
の場合は、IDE が自動的に名前をつけてくれます。この名前の文字列と、オブジェクト
参照の変数名が一致しているので、OOP を理解していない初心者は、Name プロパティー
とオブジェクト参照を混同します。るるとん@K さんのケースはこの典型例です。
♪ さんのは全く意味不明です。


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

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






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