Te faltaba por usar la otra alternativa de la sentencia if:
Código Delphi
[-]
if a then
begin
end
else if b then
begin
end
También he cambiado el nombre (a mi parecer ambiguo) que tenía por uno más estandard. Y el primer parámetro que le paso es si estará habilitado o no, aunque estas cosas es más al gusto de cada uno.
Yo creo que mejora la legibilidad ya que lees "Establecer solo lectura: SI, a los controles siguientes...blah, blah".
Código Delphi
[-]procedure SetReadOnly(const Enabled: Boolean; Ctrls: array of TWinControl);
var
i: Integer;
begin
for i:= Low(Ctrls) to High(Ctrls) do
begin
if Ctrls[i] is TEdit then
begin
if Enabled
then Ctrls[i].Color := $00FEEAD3
else Ctrls[i].Color := clWhite;
Ctrls[i].ReadOnly := Enabled;
end
else if Ctrls[i] is TcxCurrencyEdit then
begin
end
else if Ctrls[i] is TsDateEdit then
begin
end;
end;
end;
y para utilizarlo sería así...
Código Delphi
[-]procedure TFProductos.Button1Click(Sender: TObject);
begin
SetReadOnly(True, [Edit1, cxCurrencyEdit1, TsDateEdit]);
end;
Saludos