[リストへもどる]
一括表示

投稿時間:2003/12/25(Thu) 14:55
投稿者名:ダイノジ
Eメール:
URL :
タイトル:
メニューについて
はじめまして。
いつも参考にさせて頂いています。

ご教授お願いしたいのですが、
メニューエディタのリストを動的に作成することはできるのでしょうか?
たとえば、DBに登録されているデータでメニューを作成し、
そのメニューリストから、項目を選択し処理をするような流れなんです。

イメージも沸かず、今回質問させていただきました。
よろしくお願いいたします。
(VB6.0 SP5)

投稿時間:2003/12/25(Thu) 15:11
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re: メニューについて
> メニューエディタのリストを動的に作成することはできるのでしょうか?

Menuコントロールを、「コントロール配列」にすれば可能です。

例えば、
  [ファイル(&F)]  … mnuFile
  ├[開く(&O)]    … mnuFOpen
  ├[閉じる(&C)]  … mnuFClose
  └[-]           … mnuFRecent
というメニューを作っておくとします。

この時、mnuFRecentの「表示」のチェックを外しておき、
かつ、「インデックス」に 0 と書いておけば、以下のようにして
メニューの内容を動的に編集できます。

Private Sub Command1_Click()
    mnuFRecent(0).Visible = True

    Load mnuFRecent(1)
    mnuFRecent(1).Caption = "README.TXT"
    mnuFRecent(1).Visible = True

    Load mnuFRecent(2)
    mnuFRecent(2).Caption = "SAMPLE.DOC"
    mnuFRecent(2).Visible = True
End Sub


ただし、サブメニューを動的に作成する事はできません。(VB.NETなら可能ですけれども)
もし、サブメニュー項目を持たせたい場合は、APIでメニューを生成する事になるでしょう。

投稿時間:2003/12/25(Thu) 15:27
投稿者名:ダイノジ
Eメール:
URL :
タイトル:
Re^2: メニューについて
御返答ありがとうございます。

教えて頂いた方法で、メニューのリストを動的に作成することができました。

また、作成してみて分かりましたが、このリストを選択した場合の処理を
記述することは不可能(ナンセンス)だということも……

でも動的に作成する方法が分かったので、たすかりました。
ありがとうございます。


> > メニューエディタのリストを動的に作成することはできるのでしょうか?
>
> Menuコントロールを、「コントロール配列」にすれば可能です。
>

投稿時間:2003/12/25(Thu) 15:43
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^3: メニューについて
> また、作成してみて分かりましたが、このリストを選択した場合の処理を
> 記述することは不可能(ナンセンス)だということも……

さっきの例で言えば、以下のように書けますよ。

Private Sub mnuFRecent_Click(Index As Integer)
    MsgBox CStr(Index) & "番目の項目が選択されました。" & vbCrLf & _
        "項目名は[" & mnuFRecent(Index).Caption & "]です。", vbInformation
End Sub