Ver Mensaje Individual
  #2  
Antiguo 14-02-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
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.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 14-02-2011 a las 01:26:51.
Responder Con Cita