[開発環境:Win98/XP、VB6SP6]
いつもお世話になります。
今回は、動的に生成したサブメニューを、逆に削除する方法をお尋
ねします。
動的に生成する方法については過去ログにもあるし、既に私もその
機能の実現はできているのですが、削除する方法がいまいちわかり
ません。
ちなみにサブメニューの生成は、私は例えば次のようにやっています。
For i = 0 To a 'a は、存在するデータの数
Load mnuSample(i)
Next
メニューエディタで予め mnuSample(0) というのを作っておいて、
存在するデータの数だけループを回してサブメニューを生成する
ようにしています。
データを途中で削除した場合に、改めてデータの数だけのサブメニュー
を作成しなおしたいのですが、どのような方法がありますでしょうか。
よろしくお願いします。
とりあえず、『Unload mnuSample(番号)』、とか。
魔界の仮面弁士さん、お久しぶりです。
早速ありがとうございます。
はい。おっしゃるように、私も最初そのようにしたのですが、
「デザイン時に作成されたコントロールはアンロードできません」
というメッセージが出てしまい、だめでした。
>メニューエディタで予め mnuSample(0) というのを作っておいて、
というのは、いわゆる「デザイン時に作成された・・・。」という意味では?
はい、デザイン時に最初の一つ目を作成しておき、実行後は、データが全く
ない場合はVisible=Falseに、1つ以上ある場合にはVisible=True
にします。
そして、2つ目以降のデータでは、ループで新しくサブメニューを
生成します。
ちなみに、今回のエラーメッセージが出る前には、きちんと所定の
サブメニューは生成されていて、そのメニューをクリックすると、きちんと
それ以降の働きをします。
>「デザイン時に作成されたコントロールはアンロードできません」
Unload の際に、コントロール配列の Index 値を見直してみてください。
もしかして、デザイン時にあらかじめ用意してあった分を
Unload しようとしていませんか?
Unload できるのは、実行時に Load ステートメントで
動的に増やした物だけです。
> もしかして、デザイン時にあらかじめ用意してあった分を
> Unload しようとしていませんか?
なるほど、今納得しました。
最初に作成していたものは、飛ばして削除しなければいけませんね。
無事解決しました。
どうもありがとうございました。
ツイート | ![]() |