Hola DarkBlue.
Cita:
wow tienes mucho conocimiento
|
¡ Por aprender ! ...
Cita:
como por ejemplo eso de Components ¿Es acaso un objeto que contiene la lista de todos los componentes de nuestra aplicacion?
|
Components no es un objeto, es una propiedad vectorial de la clase
TComponent. Y sí contiene la lista de todos los componentes de los cuales es propietario.(
Owner).
Cita:
ahh por que sera que no me funciono esto... se me bloqueaba el form entero...
|
Código Delphi
[-]
for x:=0 to length(desabilita)-1 do
begin
Pos with findcomponent(desabilita[x]) do enabled:=false;
end;
El principal motivo de que no funcione es que la propiedad
Enabled no existe en
TComponent (si en
TControl).
Usando FindComponent sería:
Código Delphi
[-]
procedure TForm1.Deshabilita(v: array of string);
var
i:Integer;
TC: TComponent;
begin
for i:= Low(v) to High(v) do
begin
TC:= FindComponent(v[i]);
if TC is TControl then
TControl(TC).Enabled:=false;
end;
end;
Y ya que menciono a
TControl, la propiedad vectorial
Controls del mismo, también devuelve una lista de todos los controles de los cuales es propietaro.
Por lo que el ejemplo anterior también se podría haber escrito:
Código Delphi
[-]
procedure TForm1.Deshabilita(v: array of string);
var
i,j: Integer;
begin
for i:= 0 to ControlCount -1 do
for j:= Low(v) to High(v) do
if Controls[i].Name = v[j] then
Controls[i].Enabled:= False;
end;
Es decir que sumando a la del mensaje anterior, ya tenemos tres formas de hacer lo mismo.
Un saludo.