RADツールからではなくプログラムからボタンを配置させたいのですが
宣言や実際に配置する命令はどのようにすればよいのでしょうか.
webの情報にはRADツールでの説明が多いのでわからない状態です.
どなたかよろしくお願いします.
ちょっとまえに書きました。
https://www.petitmonte.com/bbs/answers?question_id=1358
begin
with tbutton.create(self) do
begin
parent:=self//何の中にあるか
name:=mybutton1;//名前をつける
left,top,width,height,caption等設定
end;
end;
> るるとん@K さんへ
with を使うと、あとでインスタンスを参照できなくなるんでは?
> name:=mybutton1;//名前をつける
名前をつけるのはどうしてですか? それに上の文ではコンパイルできませんが。
過去ログは調べたつもりでしたが足りなかったみたいです.
jokさんの方法で解決できそうです.
これならボタン以外のコンポーネントにも使えますね.
文中の'self'というのは知らなかったです.
一応Createとかすればいいのかな,と考えていたのですが,引数に
何を記述すればいいのかわからず困っていたのです.
ホントにありがとうございます.
上の文はサンプルソースではなく処理の流れを示したもので、
「left,top,width,height,caption等設定」
をそのままコンパイルするわけじゃありません
>名前をつけるのはどうしてですか?
作成後もボタンは使用します
showmdal等でなければ、作成したボタンをその手続き内で解放したら意味が無いのでは?
>あとでインスタンスを参照できなくなるんでは?
この場合、mybutton1で参照できるのでは?
>>名前をつけるのはどうしてですか?
>作成後もボタンは使用しますshowmdal等でなければ、作成したボタンをその手続き内で解放したら意味が無いのでは?
少し間違えました。変数を使うわけですね。
しかし特にどちらでも構わないのでは?
変数に代入するのではなく、名前を付ければ、
作成する数が決まっていない時に、
数字と組み合わせた名前を付けたりできるわけです
> この場合、mybutton1で参照できるのでは?
mybutton1 ってなんの型ですか? name に代入してるのですから string 型です
よね? string 型でどうやって TButton のオブジェクトを参照するつもりですか。
名前 name プロパティーは、単なる文字列です。これでは直接コンポーネントを
参照することはできませんよ。動的に作成したコンポーネントに名前をつけること
と、解放するとかしないとかは全く関係ありません。
例に挙げたとおり、
Button:TButton
とインスタンス変数を宣言しておき
Button := TButton.Create(self);
と代入しておくのが普通では。Name に代入した文字列だけで参照するには
FindComponent() をつかって TButton にキャストする必要があります。
>の場合、mybutton1で参照できるのでは?
Nameはプロパティですね.NameプロパティではButtonのインスタンスは
参照できませんよ.
>Nameはプロパティですね.NameプロパティではButtonのインスタンスは
>参照できませんよ.
jokさんが書かれている通り,キャストすれば別ですが,わざわざ
そんなことしなくても... ねっ.
TButton(mybutton1)
文字列を TButton でキャストですか?
なにをしたいんでしょうか?
えと、コンポーネントパレットからフォームにポトペタで生成されるコンポーネント
の場合は、IDE が自動的に名前をつけてくれます。この名前の文字列と、オブジェクト
参照の変数名が一致しているので、OOP を理解していない初心者は、Name プロパティー
とオブジェクト参照を混同します。るるとん@K さんのケースはこの典型例です。
♪ さんのは全く意味不明です。
ツイート | ![]() |