メニューの作成

メニューは、いろいろなCEのアプリを見ると、最上段にありますね。こうするには、コマンドバーにメニューを追加する形式を取るようです。で、ヘルプを駆使して、何とか作成方法を探しました。それによる方法を説明します。

まず、コマンドバーを初期化するサブルーチン(関数)を作ります。関数名はInitCommnadBar( )とヘルプの通りにしました。

Sub InitCommandBar()
  Dim mnuMain As CommandbarLib.CommandBarMenuBar
  Dim mnuFile As CommandbarLib.Item
  Dim mnuHelp As CommandbarLib.Item

  Set mnuMain = CommandBar1.Controls.Add(cbrMenuBar, "MainMenu")

  'add File menu items
  Set mnuFile = mnuMain.Items.Add(1, "File", "&File")
  mnuFile.SubItems.Add , "Exit", "終了"

  'add Help menu items
  Set mnuHelp = mnuMain.Items.Add(2, "Help", "&Help")
  mnuHelp.SubItems.Add , "Contents", "コンテンツ"
  mnuHelp.SubItems.Add , "About", "バージョン情報"


End Sub
☆余談 <BASIC言語って不思議>

普段僕は、C言語なのですが、上のサブメニューを作っている命令が不思議に感じます。

mnuFile.SubItems.Add , "Exit", "終了"

Addメソッドは、( )で引数を囲わなくても良いのですね。
カンマで区切って指定するなんて、よくわからなかったりします・・・

 

そうしたら、フォームをロードするイベントでこの初期化コマンドを実行させます。

Private Sub Form_Load()
  InitCommandBar
End Sub

これで、メニューができあがりました。
あとは、メニューをマウスで選択したときの動作を書きます。

Private Sub CommandBar1_MenuClick(ByVal Item As CommandbarLib.Item)
  If Item.Key = "Exit" Then App.End
  If Item.Key = "About" Then
    MsgBox "isPrime Ver.1.00", vbOKOnly, "About"
  End If
End Sub

Item.Keyにどのメニュー項目が選択されたかが入っていますので、それをIF文でもSELECT-CASE文でも良いですから、それを使って見分けてやればいいです。

ちなみに、Item.Keyの値は、先に作ったメニューのところの

mnuFile.SubItems.Add , "Exit", "終了"

Addの後ろの2つの引数のうちの最初のものが入ります。