• 締切済み

メニュー構築

都合の良い質問で申し訳ありません。 C言語でメニューを構成したいと思います。 (基本的なアルゴリズムには言語は関係ないと思いますが・・・) 階層は5階層程度、各階層が2~5メニューを考えております。 初期は当然トップメニューの先頭項目、 トップメニューの項目の内いずれかが選択されたらそれに応じた2階層目に移動、 2階層目の項目の内いずれかが選択されたらそれに応じた3階層目に移動・・・ と考えていたら、その管理方法に頭が痛くなってきました。(^^ゞ 今どの階層の何項目に居て、その下位層にはどんな項目がある等を効率良く管理する方法は無いもんでしょうか? ツリー構造?リスト構造? 参考になるサイト等があれば、ご教示頂けると有り難いです。 よろしくお願いします。

みんなの回答

  • xcrOSgS2wY
  • ベストアンサー率50% (1006/1985)
回答No.2

何階層のメニューになるか分からないようなものをサポートするのであれば「再帰的なツリー構造」でしょう。同じ階層に属するメニュー項目はリスト構造で管理できますから、あわせれば「『リスト構造の再帰的なツリー』構造」でしょうか。 5階層のうち2階層目が・・・3階層目が・・・と考えるから面倒なのです。自身を下位階層に持つことのできる構造を1階層分だけ作成すれば、それを繰り返し適用することで何階層にでもできます。(ファイル/フォルダ構造と同じです。)

  • trajaa
  • ベストアンサー率22% (2662/11921)
回答No.1

直接の回答ではないですが、 5階層と言うことは、AAAメニューのBBBを選択しその中のCCC項目を選択しその中のDDD項目を選択しその中のEEE項目を選択するって事ですか? ん~。 使う立場で言わせていただければ、2階層か3階層ぐらいがベターだと思いますけど? あまり階層が深いと、面倒に感じないかなぁ。

関連するQ&A

  • ツリービューについて

    いつも参考にしています。 今回初めてVBで開発することになりました。 ツリービューの部分で詰ってしまいました。 【内容1】 2階層のツリーで下位階層(子)が選択されているときだけ実行したい処理があります。 現在選択しているノードが上位階層(親)か下位階層(子)か判断できるような関数などあるのでしょうか? 【内容2】 現在、画面上のツリービュー表示項目をダブルクリックすると値を更新できてしまうのですが、更新不可にできないでしょうか? どちらも初歩的なことなのかも知れませんが、検索しても分からなかったんです。 どうぞアドバイスお願いします。 VBは6.0です。

  • ホームページ作成ソフト、探しています

    ホームページ作成ソフトを探しています。無料体験版を試していますが、私が調べた範囲では殆どが階層構造が2段階(親→子)まででした。 つきましては、下記のような階層のホームページ作成ソフトをご存知の方、いらっしゃいませんか? ①親(トップページ・メニュー)→子(親のメニューで選択したページの詳細)→孫(子で選択した項目の詳細) ②親(トップページ・メニュー)→子(親のメニューで選択したページの詳細)→孫(子で選択した項目の詳細)→ひ孫(PDFや写真など詳細画面) すなわち、自由に階層構造を作成できるソフトが欲しいのですが。

  • 既存ソフトの一部機能とそっくりな機能を開発アプリの中に組み込む場合の法的問題

    自社で使う(販売はしない)ウィンドウズアプリケーションをVisual Basic 6.0で開発中の者ですが、Windowsのエクスプローラーとそっくりな機能を持つ下記のような画面を作った場合、マイクロソフト社の著作権か知的財産権を侵害することにならないか、心配です。 どなたかこの方面に詳しい方、白か黒か(灰色か)を教えてください。 左右2つのウィンドウ(フレーム)から成る画面で、左側のウィンドウには階層構造になっている業務項目の項目アイコンをツリー状に表示します。 右側のウィンドウで業務処理を行うのですが、その際、左側のウィンドウから該当する項目を選択して(当該階層が閉じていれば親階層の「+」アイコンをクリックして展開する)、その登録内容を取得する処理があります。 問題は、左側のウィンドウなのですが、ツリー構造の表示形式、下位階層の開閉方法がエクスプローラーと酷似していることです。違うのはフォルダアイコンの代わりに業務固有の項目アイコンを表示するくらいでしょうか。 なお、上記事例のほかに一般論として、市販されている開発ツール(言語)を使って非営利目的のアプリケーションを開発する場合、どのような点に気をつけなければならないかを併せてご教示願えれば幸いです。

  • ツリーメニュー内の下階層への直リンク

    初めて質問させていただきます。 業務上の事となりますので、誠に勝手ながら迅速な回答を 希望させていただきます。 JavaScriptで2階層ほどのツリーメニューを作成しようと考えております。 しかし、このページは外部サイトから直接リンクを貼る機会が多く、 またそれぞれの下階層ページへ直接アクセス出来ることが必須である為、 URL等で指定可能かどうかお教え下さい。 また、可能であれば指定方法等もご教授いただければ幸いです。 検討段階で作業に掛かっていない為、 具体的な部分が少なくご迷惑をお掛けいたしますが、 何卒宜しくお願いいたします。

  • visual studioでのメニュー画面作成

    visual studio(C#)で趣味でアプリを作っています。 以下のような画面を作成したいのですが、実現方法が良く分からず質問させていただきます。 ・EXEを実行するとメインメニュー画面が起動する。 ・そのメインメニュー画面は左側の約1/3に第1階層のメニューが表示され、  右側に第2階層のメニューが表示される。  第2階層のメニュークリックでサブ画面の起動、  または、第3階層のメニューが表示。 ここで言うメインメニューとはメモ帳などの上部に表示されるファイルメニューのようなものではありません。 MacでSafariの画面上部のサイドバーをクリックすると画面左側にBookmarkが表示されますが、それが1階層で2階層以降はは右側に表示されるイメージです。HTMLのリンクみたいなものをイメージしています。(ボタンだと表示しにくいので。。。) 説明がわかりづらいかもしれませんが、よろしくお願いします。

  • メニューの階層について

    phpとmysqlでショッピングサイトをつくっています。 まずは、カテゴリーを登録し商品を登録する際に登録してある カテゴリーをmysqlから読み込みカテゴリーの選択を行うのですが カテゴリーの階層が1階層しかない状態です。 ・カテゴリー1(登録件数) ・カテゴリー2(登録件数) これを ・カテゴリー1(登録件数)   |_ サブカテゴリー1(登録件数)   |_ サブカテゴリー2(登録件数) ・カテゴリー2(登録件数)   |_ サブカテゴリー1(登録件数)   |_ サブカテゴリー2(登録件数) のような2階層以上にしたいのですがテーブル構造やphpの 処理などの具体的なイメージがわかない状態です。 アドバイスや参考になるサイトなど情報をお持ちの方が おりましたらご教授お願い致します。

    • 締切済み
    • PHP
  • WinXPの階層メニューでマウスオーバーに反応させたくない

    Windows XPでは、プルダウンメニューなど(例:IE6のお気に入り)が階層構造になっていた場合、 項目にカーソルを重ねると一定時間たってから次のメニューが表示されますが、 マウスクリックした場合のみに反応させるにはどうしたらいいのでしょうか。

  • コンポジットパターンで作成した最上位のコンポーネントからiterateで表示する方法

    コンポジットパターンを使用してエクスプローラーのツリー構造を作成しています。 最上位のコンポーネントには、ディレクトリやファイルデータがはいっています。 System.out.prinlnでコンソールでは出力できるのですが、JSPで最上位→1階層目→2階層目と出力 するには、どのようにして、1階層目とか、判断していけばよいのでしょうか。 現状では、ひとつしかでません。 コンポジットパターンを使用して再帰的な処理というのは理解できるのですが、取得する方法など、 どのように考えればよいでしょうか? SWINGではなく新規でエクスプローラー画面を作ることになりつまっています。

  • エクセル:セルにプルダウンメニューをつけたい

    エクセルにおいて、セル一つにプルダウンメニューをつけたいのです。 ここのトップページのカテゴリ選択のように、一定の項目をあらかじめ用意しておき、 その中から選択をさせたいのです。 新規項目の追加は必要ありません。 あと、どれが選択されているかを知る方法もあわせて教えてください。 よろしくお願いします。

  • メニュー登録のマクロの書き方

    エクセルを開いた時のツールバーで、 「ファイル」を選択すると「新規作成」などのメニューが出ますよね。 その中に「印刷範囲」というメニューがあり、 これにカーソルを合わせると更に右に「印刷範囲の設定」「印刷範囲のクリア」というメニューが出てきます。 この、2階層持つメニューをマクロで作成したいのですが、可能でしょうか。 1階層だけであれば、 Set menu1 = Application.CommandBars("worksheet menu bar"). _ Controls.Add(Type:=msoControlPopup, Temporary:=True) menu1.Caption = "ツールバーに表示させるメニュー名" .Controls.Add Type:=msoControlButton With .Controls(1) .Caption = "メニュー1" .OnAction = "メニュー1のマクロの名前?" End With という記述で実現できました。

専門家に質問してみよう