Hola.
También podes hacerte un procedimiento que cambie cualquier propiedad ordinal, siempre que la tengan, de los controles del form:
Código Delphi
[-]
uses TypInfo;
procedure TForm1.SetCtrlsProp(Lista: array of string; AProperty: string;
Value: Variant);
var
i,j: Integer;
begin
for i:= High(Lista) downto Low(Lista) do
begin
j:= 0;
while(j < ControlCount)and(Controls[j].Name <> Lista[i])do Inc(j);
if(j < ControlCount)and(Controls[j].Name = Lista[i]) then
begin
if GetPropInfo(Controls[j].ClassInfo, AProperty) <> nil then
SetOrdProp(Controls[j], AProperty, Value);
end;
end;
end;
Eso te permite hacer cosas como por ejemplo:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
SetCtrlsProp(['Edit1', 'Edit3', 'Edit2'],'Enabled', False);
SetCtrlsProp(['DBGrid1', 'DBEdit1', 'DBEdit2'], 'ReadOnly', True);
SetCtrlsProp(['Edit1', 'Edit2', 'DBGrid1'], 'Color', clYellow);
end;
Lo que sí tenés que ser cuidadoso con los nombres, el procedimiento no es tan virtuoso como para distinguir Edit1 de EdiT1 ...
Pero si deseas ese comportamiento, es muy sencillo implementar que ignore mayúsculas/minúsculas. (UpperCase)
Saludos.
Edito: Me olvidé de avisarte, el procedimiento funciona sólo con
propiedades ordinales. (no podrías cambiar la propiedad Text por ejemplo)