当前位置:主页>仓库管理软件> 列表

如何通过表遍例生成菜单 找免费库存软件

进销存软件版1楼: 如何通过表遍例生成菜单;
表:
ID PID CAPTIONP
1 0 文件
2 1 打开
3 1 退出
4 0 编辑
5 4 撤销
6 4 粘贴
。。。。。



生成:

文件 编辑 。。。。
打开 撤销 。。。。
退出 粘贴 。。。。

2楼: 做好菜单,全部不显示,
遍历数据表,找到符合当前ID且有操作权限条件的菜单项目,恢复显示 如免费库存软件

3楼: 这段代码测试没有通过,我要急着回家,不过希望对你有所帮助
const AryMenu: Array[1..6,1..3] of string =((''1'',''0'',''文件''),(''2'',''1'',''打开''),
(''3'',''1'',''退出''),(''4'',''0'',''编辑''),(''5'',''4'',''剪切''),(''6'',''4'',''粘贴''));
var
Form1: TForm1;

implementation

{$R *.dfm}
procedure InitMenuItem(DestMenu: TMenuItem;MM: TMainMenu);
var
mItem: TMenuItem;
I: integer;
begin


For I := 1 to 6 do
begin
mItem := TMenuItem.Create(MM);
mItem.Caption := AryMenu[I,3];
mItem.Tag := strtoint(AryMenu[I,2]);

if (AryMenu[I,1] = inttostr(DestMenu.Tag)) and (mItem.Caption <> DestMenu.Caption) then
begin
DestMenu.Add(mItem);
InitMenuItem(mItem,MM);
end;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
InitMenuItem(MM.Items,MM);
end;

4楼: //可能有点出入,但是能用.
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, DB, ADODB;

type
TForm1 = class(TForm)
Button1: TButton;
MainMenu1: TMainMenu;
ADOQuery1: TADOQuery;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);


var menu:TMenuItem ;
I,J: Integer;
begin
ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add(''select * from 权限表 where 用户权限=有'');
ADOQuery1.Open;
ADOQuery1.First;
for I := 0 to ADOQuery1.RecordCount - 1 do
begin
menu:=TMenuItem.Create(self);
menu.Caption:=ADOQuery1.fieldbyname(''父菜单'').AsString;
MainMenu1.Items.Add(menu);
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(''select * from 子菜单 Where 父菜单=''''''menu.Caption'''''''');
ADOQuery2.Open;
ADOQuery2.First;
for J := 0 to ADOQuery2.RecordCount - 1 do // Iterate
begin
menu:=TMenuItem.Create(self);
menu.Caption:=ADOQuery2.fieldbyname(''子菜单'').AsString;'';
MainMenu1.Items[i].Add(menu);
ADOQuery2.Next;
end;
ADOQuery1.Next;
end;
end;
end.

5楼: 老兄,如何了

6楼: 散了,一叶秋, 的方法是我以前用的,现在想改,也没有找到合适的答案,散分

进销存软件版7楼: 多人接受答案了。

8楼: WenSoft:


你的数据库设计的很合理,但是竟然用这样弱智的方法加载菜单,麻烦你有空去学习一下什么叫递归函数吧