为 delphi 中的页面动态设置可见 属性
Dynamically set visible property for a page in delphi
我正在对许多页面(AdvPage1、AdvPage2、AdvPage3...)使用 TAdvToolBarPager。每个页面都包含许多编辑、导航器等。基于用户权限,我想限制属性,即对于 ADMIN i想显示所有页面 (1,2,3) 但对于 USER 我只想显示页面 (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;
根据您对问题的评论,假设管理页面始终是第三个,这个简化的过程应该可以满足您的要求:
Procedure SetForm(Form: TForm; enabled: Boolean);
var
i: Integer;
begin
for i := 0 to Form.ComponentCount - 1 do begin
if (Form.Components[i] is TAdvToolBarPager) then begin
TAdvToolBarPager(Form.Components[i]).AdvPages[2].TabVisible := enabled;
Exit; // probably only one AdvToolBarPager available
end;
end;
end;
我正在对许多页面(AdvPage1、AdvPage2、AdvPage3...)使用 TAdvToolBarPager。每个页面都包含许多编辑、导航器等。基于用户权限,我想限制属性,即对于 ADMIN i想显示所有页面 (1,2,3) 但对于 USER 我只想显示页面 (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;
根据您对问题的评论,假设管理页面始终是第三个,这个简化的过程应该可以满足您的要求:
Procedure SetForm(Form: TForm; enabled: Boolean);
var
i: Integer;
begin
for i := 0 to Form.ComponentCount - 1 do begin
if (Form.Components[i] is TAdvToolBarPager) then begin
TAdvToolBarPager(Form.Components[i]).AdvPages[2].TabVisible := enabled;
Exit; // probably only one AdvToolBarPager available
end;
end;
end;