お世話になります。
動的にデータからメーニューを作りたいと思っています。
下の絵のような感じです。
LEVEL1から表示してClickかなんらかの方法でLVEL2を表示する。
イメージ的にはスタートメニューの「すべてのプログラム」
のような動きにしたいのですが、
いろいろ調べたのですが良い方法が見つかりません。
LEVEL1とかのMAX件数を決めて個別に書くしかないのでしょうか。
ちなみに今はPanelを列挙して固定でLEVEL1を作成してみました。
アドバイスをお願いします。
LEVEL1 LEVEL2 LEVEL3
-----------
販売メニュー
----------- ------------- -------------
経理メニュー ---> 日次メニュー ---> 仕訳入力
----------- ------------- -------------
給与メニュー 月次メニュー 仕訳入力チェック表
----------- ------------- -------------
コンポーネントでいうなら
・TTreeView
・TPopupMenu
・VirtualTreeView(http://www.delphi-gems.com/index.php?option=com_content&task=view&id=12&Itemid=38)※難しくて私は挫折・・・
・etc.
スタートボタンのイメージならばTPopupMenuがいいんですかねぇ。
procedure TForm1.Button1Click(Sender: TObject);
begin
PopupMenu1.Popup(TButton(Sender).ClientOrigin.X + TButton(Sender).Width,
TButton(Sender).ClientOrigin.Y);
end;
※表示位置は調整してください。
動的追加はAddメソッドで出来ると思います。
Menuの動的追加ならこんな感じなんだけど・・・
var
Menu1,Menu2,Menu3 : TMenuItem;
begin
Menu1 := TMenuItem.Create(Self);
Menu1.Caption := '販売メニュー(&H)';
Menu1.OnClick := Button2Click;
PopupMenu1.Items.Add(Menu1);
Menu1 := TMenuItem.Create(Self);
Menu1.Caption := '経理メニュー(&K)';
//Menu1.OnClick := Button2Click;
PopupMenu1.Items.Add(Menu1);
Menu2 := TMenuItem.Create(Self);
Menu2.Caption := '日時メニュー(&D)';
//Menu2.OnClick := Button2Click;
Menu1.Add(Menu2);
Menu3 := TMenuItem.Create(Self);
Menu3.Caption := '仕分け入力(&I)';
Menu3.OnClick := Button2Click;
Menu2.Add(Menu3);
Menu3 := TMenuItem.Create(Self);
Menu3.Caption := '仕分け入力チェック表(&C)';
Menu3.OnClick := Button2Click;
Menu2.Add(Menu3);
Menu2 := TMenuItem.Create(Self);
Menu2.Caption := '月次メニュー(&M)';
Menu2.OnClick := Button2Click;
Menu1.Add(Menu2);
Menu1 := TMenuItem.Create(Self);
Menu1.Caption := '給与メニュー(&K)';
Menu1.OnClick := Button2Click;
PopupMenu1.Items.Add(Menu1);
ツイート | ![]() |