求助!!!如何删除控件中的子控件?

碧树西风 5月前 501

如何删除FMX控件中的所有子控件? 除了部分控件

以下是实现代码,执行完成后,APP自动退出了,

WHY? 求指导

function dfwDestroyAll(AParent:TControl;AExceptNames:array of string):Integer;
var
     iCtrl     : Integer;
     bExcept   : Boolean;     //是否不用删除
     iExcept   : Integer;
begin
     Result    := 0;

     //
     try
          for iCtrl := AParent.ControlsCount-1 downto 1 do begin
               bExcept   := False;
               for iExcept := 0 to High(AExceptNames) do begin
                    if LowerCase(AParent.Controls[iCtrl].Name) = LowerCase(AExceptNames[iExcept]) then begin
                         bExcept   := True;
                         Break;
                    end;
               end;

               //
               if not bExcept then begin
                    AParent.Controls[iCtrl].Destroy;
               end;
          end;
     except
          Result    := -1;
     end;
end;

最新回复 (0)
  • 碧树西风 5月前
    0 引用 2
    经测试,发现有一个地方。
    目前我删除的是VertScrollBox中的控件,其直接子控件有两个,分别为TLayout和TScrollContent,
    TScrollContent内才是“感觉上”是VertScrollBox中的控件, 如果直接采用controls来删除,会直接删除TLayout和TScrollContent,导致出错! 
    正在深入测试中,有结果再来汇报
  • 碧树西风 5月前
    0 引用 3

    又发现一个问题:
    动态创建的控件Name为空!!!
    fmx的坑还真不少
    在创建时给Name赋值后,再删除,删除后基本正常了。
    但重新再动态创建时还报错, 继续测试中

返回