From c28efd0f6b6c08a5302251d35880947bbe4e0d3d Mon Sep 17 00:00:00 2001 From: LanHeron Date: Wed, 10 Sep 2025 22:45:42 +0800 Subject: [PATCH] vault backup: 2025-09-10 22:45:42 --- .../相关操作/4.0-other/999.Delphi脚本记录.md | 56 ++++++++++++++++++- 1 file changed, 55 insertions(+), 1 deletion(-) diff --git a/SanPinPLM/相关操作/4.0-other/999.Delphi脚本记录.md b/SanPinPLM/相关操作/4.0-other/999.Delphi脚本记录.md index e73b0431..cfe56d49 100644 --- a/SanPinPLM/相关操作/4.0-other/999.Delphi脚本记录.md +++ b/SanPinPLM/相关操作/4.0-other/999.Delphi脚本记录.md @@ -875,8 +875,62 @@ 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; +var +  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; +end. ``` ### 说明