vault backup: 2025-09-10 22:49:43
This commit is contained in:
@ -878,58 +878,92 @@ end.
|
||||
|
||||
|
||||
```delphi
|
||||
uses MyClass,Variables,BaseUtil,CommonFunc,DataConst,CFFrm,CFSimplePropFrm,Forms,StdCtrls,Variants,SysUtils,Classes,Controls,Dialogs,CHostIntf,ProductClas,DocClas,LoginClas,VirtualTrees,CEntClas,PathClas,cxRadioGroup;
|
||||
uses
|
||||
MyClass, Variables, BaseUtil, CommonFunc, DataConst, CFFrm, CFSimplePropFrm,
|
||||
Forms, StdCtrls, Variants, SysUtils, Classes, Controls, Dialogs, CHostIntf,
|
||||
ProductClas, DocClas, LoginClas, VirtualTrees, CEntClas, PathClas, cxRadioGroup;
|
||||
|
||||
var
|
||||
i: Integer;
|
||||
j: Integer;
|
||||
n: Integer;
|
||||
frm: TForm;
|
||||
scb: TScrollBox;
|
||||
rdg: TcxRadioGroup;
|
||||
ctrl: TControl;
|
||||
gb: TGroupBox;
|
||||
rdgName: string;
|
||||
hidPnlNames: TStringList;
|
||||
i: Integer; // 外层循环计数器(窗体遍历)
|
||||
j: Integer; // 中层循环计数器(滚动框控件遍历)
|
||||
n: Integer; // 内层循环计数器(分组框控件遍历)
|
||||
frm: TForm; // 当前处理的窗体对象
|
||||
scb: TScrollBox; // 单选框的父容器(滚动框)
|
||||
rdg: TcxRadioGroup; // 目标单选框组件
|
||||
ctrl: TControl; // 通用控件对象(用于遍历)
|
||||
gb: TGroupBox; // 分组框控件(特殊容器处理)
|
||||
rdgName: string; // 目标单选框组件名称
|
||||
hidPnlNames: TStringList; // 需要隐藏的容器名称列表
|
||||
|
||||
begin
|
||||
rdgName := 'rdgrpmuf_1'; // 单选框组件名
|
||||
hidPnlNames := TStringList.Create;
|
||||
try
|
||||
hidPnlNames.Add('gbcxtsCusPage_1'); // 添加要隐藏的容器名
|
||||
hidPnlNames.Add('gbcxtsCusPage_2'); // 可以多个
|
||||
for i := 0 to Screen.FormCount - 1 do
|
||||
begin
|
||||
frm := Screen.Forms[i];
|
||||
if Pos('CFFormSheetPropForm', frm.Name) = 1 then begin //找到了窗口
|
||||
rdg := TcxRadioGroup(frm.FindComponent(rdgName));
|
||||
if Assigned(rdg) then begin // 找到了单选框
|
||||
scb := rdg.Parent as TScrollBox; // 遍历父容器
|
||||
for j := 0 to scb.ControlCount - 1 do
|
||||
begin
|
||||
ctrl := scb.Controls[j];
|
||||
if hidPnlNames.IndexOf(ctrl.Name)>-1 then begin
|
||||
if rdg.itemindex = 0 then begin
|
||||
ctrl.visible := false;
|
||||
end;
|
||||
end else begin // 不是想要的控件
|
||||
if ctrl is TGroupBox then begin // 如果是分组框,再遍历子件
|
||||
gb := ctrl as TGroupBox;
|
||||
for n := 0 to gb.ControlCount - 1 do begin
|
||||
ctrl := gb.Controls[n];
|
||||
if hidPnlNames.IndexOf(ctrl.Name)>-1 then begin
|
||||
if rdg.itemindex = 0 then begin
|
||||
ctrl.visible := false;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
hidPnlNames.Free;
|
||||
end;
|
||||
rdgName := 'rdgrpmuf_1'; // 指定目标单选框组件的名称
|
||||
|
||||
// 创建并初始化需要隐藏的容器名称列表
|
||||
hidPnlNames := TStringList.Create;
|
||||
try
|
||||
// 添加需要隐藏的容器名称(可扩展多个)
|
||||
hidPnlNames.Add('gbcxtsCusPage_1');
|
||||
hidPnlNames.Add('gbcxtsCusPage_2');
|
||||
|
||||
// 遍历屏幕上所有已打开的窗体
|
||||
for i := 0 to Screen.FormCount - 1 do
|
||||
begin
|
||||
frm := Screen.Forms[i];
|
||||
|
||||
// 检查窗体名称是否以'CFFormSheetPropForm'开头(匹配目标窗体)
|
||||
if Pos('CFFormSheetPropForm', frm.Name) = 1 then
|
||||
begin
|
||||
// 在窗体中查找目标单选框组件
|
||||
rdg := TcxRadioGroup(frm.FindComponent(rdgName));
|
||||
|
||||
// 如果成功找到单选框组件
|
||||
if Assigned(rdg) then
|
||||
begin
|
||||
// 获取单选框的父容器(假定为TScrollBox类型)
|
||||
scb := rdg.Parent as TScrollBox;
|
||||
|
||||
// 遍历滚动框中的所有控件
|
||||
for j := 0 to scb.ControlCount - 1 do
|
||||
begin
|
||||
ctrl := scb.Controls[j];
|
||||
|
||||
// 检查当前控件是否在隐藏列表中
|
||||
if hidPnlNames.IndexOf(ctrl.Name) > -1 then
|
||||
begin
|
||||
// 如果单选框选中第一项(ItemIndex=0),则隐藏该控件
|
||||
if rdg.ItemIndex = 0 then
|
||||
ctrl.Visible := False;
|
||||
end
|
||||
else // 如果不在直接隐藏列表中,进一步检查是否为容器控件
|
||||
begin
|
||||
// 如果控件是分组框(TGroupBox)
|
||||
if ctrl is TGroupBox then
|
||||
begin
|
||||
gb := ctrl as TGroupBox;
|
||||
|
||||
// 遍历分组框内的所有子控件
|
||||
for n := 0 to gb.ControlCount - 1 do
|
||||
begin
|
||||
ctrl := gb.Controls[n];
|
||||
|
||||
// 检查子控件是否在隐藏列表中
|
||||
if hidPnlNames.IndexOf(ctrl.Name) > -1 then
|
||||
begin
|
||||
// 单选框选中第一项时隐藏子控件
|
||||
if rdg.ItemIndex = 0 then
|
||||
ctrl.Visible := False;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
finally
|
||||
// 释放隐藏列表资源(确保异常时也能释放)
|
||||
hidPnlNames.Free;
|
||||
end;
|
||||
end.
|
||||
```
|
||||
|
||||
|
Reference in New Issue
Block a user