如何在使用Delphi的演员表中使用参数

Har*_*riv 2 delphi casting

如何在Delphi中执行此操作:

procedure ToggleVisibility(ControlClass : TControlClass);
var
  i : integer;
begin
  for i := 0 to ComponentCount - 1 do
    if Components[i] is ControlClass then
      ControlClass(Components[i]).Visible := not Control(Components[i]).Visible;
end;
Run Code Online (Sandbox Code Playgroud)

在这种情况下,编译器不允许强制转换.有任何想法吗?

我正在使用Delphi 2007.

mgh*_*hie 10

由于组件是a TControl或者后代,因此必须强制转换为TControl:

procedure ToggleVisibility(ComponentClass : TControlClass);
var
  i : integer;
begin
  for i := 0 to ComponentCount - 1 do begin
    if Components[i] is ComponentClass then
      TControl(Components[i]).Visible := not TControl(Components[i]).Visible;
  end;
end;
Run Code Online (Sandbox Code Playgroud)