当前位置:主页>销售管理软件> 列表

如何根据给出的名字动态创建控件??? 找用友财务软件破解版

进销存软件版1楼: 我的思路是这样的:
有一个MainMenu,里面的菜单项都已设计完成,现在我想在不同的用户下显示不同的菜单,现在把不同用户对应的菜单按钮的名字存放在数据库中,通过select,得出这个用户对应的菜单按钮的名字(string类型),现在我应该怎么根据这个名字来控制按钮的visible:=false or true???
原来的按钮已经存在,在根据这个字符创建一个就会产生冲突!!!

2楼: procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to MainMenu1.Items.Count - 1 do
begin
if MainMenu1.Items[i].Name = ''***'' then
MainMenu1.Items[i] := False / True;
end;
end; 如记账软件

3楼: 我的菜单项有几十个,用这种方法效率有点低,有没有其它更好的办

4楼: procedure TForm1.Button1Click(Sender: TObject);
var
i : integer;
begin
for i := 0 to MainMenu1.Items.Count - 1 do
begin
if Table.Locate(''FieldName'', MainMenu1.Items[i].Name, [****]) then


MainMenu1.Items[i] := False / True;
end;
end;

5楼: 如果想处理速度快一些,那就先处理菜单栏,在用户选中某个菜单的时候,这时再来处理它的下拉菜单,当然,最好在每一个下拉菜单中设置一个flag,这样只要处理一遍就行了。

6楼: 那请问高手处理“不同的用户可显示不同的菜单项”的时候是怎么处理的??

进销存软件版7楼: 1.静态的:做好所有的菜单,根据用户隐藏其看不见的菜单。
2.动态的:根据数据库里面该用户可用的菜单项记录,动态生成菜单项!

8楼: “不同的用户可显示不同的菜单项”,这个本身是由你自己设计数据表来考虑的,楼主可以树形结构来设计这个表A,如有字段ID和ParentID,同时,你肯定会有一个用户表B,只要在表B和表A之间建立关系就行了。其余的问题就是写SQL查询语句了。

9楼: 个人觉得最好的方法是用actionlist,actionlist里面的每个action都有一个标示对应于数据库的一个数据,然后每个用户都记录对action得权限。

10楼: 同意楼上的,我自己就是使用Action来处理的,即控制Action的Caption、Visible、Enable属性就可以了,这样,菜单、按钮等可以处理。

11楼: 没用过actionlist,不明白这个怎么可以变成mainmenu呢,或者怎么关联起来???

12楼: 添加菜单项的时候,在其Action属性里面选择 actionlist 里面的任意一个 如用友财务软件破解版

13楼: 我觉得应该建立一个数组 把用户的权限按位依次读进数组 根据数组每位的值判断其visiable或enable

进销存软件版14楼: 我刚试了一下使用action,觉得不错,但是现在还是怎么把Action和数据库关联起来的问题,我在这方面已陷入死角了,还请详细指点一下!!!

15楼: 数据库中存放Action的Name,和该Action是否可用(True or False,1 or 0 等等),显示窗体前,遍历所有的Action,然后设置其Visible嘛

16楼: 遍历所有的Action,也是使用上面的遍历mainmenu的方法吗??

17楼: 差不多吧

18楼: 多人接受答案了。

19楼: 给每个用户一个FLAG,菜单项也一个FLAG,两者相与,如果为0,就False,为1则Visible这种方式最好不过,不需要去判断名称