【发布时间】:2017-05-03 05:50:54
【问题描述】:
我正在使用带有许多页面(AdvPage1、AdvPage2、AdvPage3...)的 TAdvToolBarPager。每个页面都包含许多编辑、导航器等。基于用户权限,我想约束属性,即我想为 ADMIN显示所有页面 (1,2,3),但对于用户,我只想显示页面 (1,2) 或 (1)。
我可以使用下面给出的代码禁用所有编辑、导航器。有人可以帮助我如何根据约束/任何其他替代方法在 TAdvToolBarPager 中设置页面。提前致谢!
Procedure SetForm(Form: TForm; enabled: Boolean);
var PropInfo : PPropInfo;
i : Integer;
begin
for i := 0 to Pred(Form.ComponentCount) do
begin
if (Form.Components[i] is TDBEdit) or (Form.Components[i] is DBNavigator) then
begin
PropInfo := GetPropInfo(Form.Components[i].ClassInfo, 'Enabled');
if PropInfo <> nil then
SetOrdProp(Form.Components[i], PropInfo, Ord(enabled));
end;
end;
end;
【问题讨论】:
-
你不能把第 3 页的 TabVisible 属性设置为 False 吗?如果您希望页面可见但不可选,则可以将 TabEnabled 设置为 False。
-
是的,我可以使用提到的来做到这一点。我如何迭代并将 TabVisible / TabEnabled 设置为 TAdvToolBarPager 中的 AdvPage? Form.AdvToolBarPager1.AdvPages[1].TabVisible := False; Form.AdvToolBarPager1.AdvPages[2].TabVisible := False; Form.AdvToolBarPager1.AdvPages[1].TabVisible := False;但我想动态设置。
-
您能解释一下“动态设置”是什么意思吗?你会如何调用上面的 SetForm 过程?
-
我在我的应用程序中使用了许多表单。每个表单都有一个 TAdvToolBarPager。每个 TAdvToolBarPager 里面都有很多页面。基于管理员/用户我想显示页面。所以我想从我的主表单中传递表单名称和可见属性(true/false)并动态控制应用程序中的所有其他表单。我通过传递表单名称来调用上面提到的 SetForm,如果用户是管理员,那么我将布尔值传递为 true,如果用户是普通用户,那么我将布尔值传递为 false
-
创建一个(虚拟?)过程以在每个表单中执行此操作,使用用户类型作为参数?
标签: delphi delphi-xe8 tms