Hola DarkBlue.
La palabra clave
is, se utiliza para saber si un objeto pertenece o desciende de una clase determinada.
Por lo que veo en tu código: for x:=0 to
length(desabilita) do..., supongo que intentas pasarle a un procedimiento,
mediante un vector abierto, los nombres de los componentes a deshabilitar.
Un modo de hacerlo puede ser:
Código Delphi
[-]
procedure TForm1.Deshabilita(v: array of string);
var
i,j: Integer;
begin
for i:= 0 to ComponentCount -1 do
for j:= High(v) downto Low(v) do
if (Components[i] is TControl) and (Components[i].Name = v[j]) then
TControl(Components[i]).Enabled:= False;
end;
Llamadas de ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
v: array[1..5] of string;
begin
v[1]:= 'Button5';
v[2]:= 'Button2';
v[3]:= 'Edit2';
v[4]:= 'Button7';
v[5]:= 'Label1';
Deshabilita(v);
end;
O directamente:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
Deshabilita(['Label1','Edit2','Button2','Button7', 'OpenDialog1']);
end;
Como verás utilicé la comprobación:
Código Delphi
[-]
if (Components[i] is TControl) and (Components[i].Name = v[j]) then
Para evitar una posible excepción al referenciar un componente que no derive de
TControl, como en el último ejemplo. ( 'Opendialog1' ).
Un saludo.