動的に作成したメニューを逆に削除するには?

解決


マロン  2005-10-12 02:40:05  No: 126192

[開発環境:Win98/XP、VB6SP6]

いつもお世話になります。
今回は、動的に生成したサブメニューを、逆に削除する方法をお尋
ねします。

動的に生成する方法については過去ログにもあるし、既に私もその
機能の実現はできているのですが、削除する方法がいまいちわかり
ません。

ちなみにサブメニューの生成は、私は例えば次のようにやっています。

  For i = 0 To a    'a は、存在するデータの数
    Load mnuSample(i)
  Next

メニューエディタで予め mnuSample(0) というのを作っておいて、
存在するデータの数だけループを回してサブメニューを生成する
ようにしています。

データを途中で削除した場合に、改めてデータの数だけのサブメニュー
を作成しなおしたいのですが、どのような方法がありますでしょうか。
よろしくお願いします。


魔界の仮面弁士  2005-10-12 02:59:40  No: 126193

とりあえず、『Unload mnuSample(番号)』、とか。


マロン  2005-10-12 03:36:25  No: 126194

魔界の仮面弁士さん、お久しぶりです。
早速ありがとうございます。

はい。おっしゃるように、私も最初そのようにしたのですが、
「デザイン時に作成されたコントロールはアンロードできません」
というメッセージが出てしまい、だめでした。


・・・。  2005-10-12 04:01:00  No: 126195

>メニューエディタで予め mnuSample(0) というのを作っておいて、

というのは、いわゆる「デザイン時に作成された・・・。」という意味では?


マロン  2005-10-12 04:06:45  No: 126196

はい、デザイン時に最初の一つ目を作成しておき、実行後は、データが全く
ない場合はVisible=Falseに、1つ以上ある場合にはVisible=True
にします。
そして、2つ目以降のデータでは、ループで新しくサブメニューを
生成します。

ちなみに、今回のエラーメッセージが出る前には、きちんと所定の
サブメニューは生成されていて、そのメニューをクリックすると、きちんと
それ以降の働きをします。


魔界の仮面弁士  2005-10-12 06:35:46  No: 126197

>「デザイン時に作成されたコントロールはアンロードできません」

Unload の際に、コントロール配列の Index 値を見直してみてください。
もしかして、デザイン時にあらかじめ用意してあった分を
Unload しようとしていませんか?

Unload できるのは、実行時に Load ステートメントで
動的に増やした物だけです。


マロン  2005-10-12 09:18:49  No: 126198

> もしかして、デザイン時にあらかじめ用意してあった分を
> Unload しようとしていませんか?

なるほど、今納得しました。
最初に作成していたものは、飛ばして削除しなければいけませんね。

無事解決しました。
どうもありがとうございました。


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

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






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