Cita:
Empezado por ecfisa
...
Lo que sí te comento es que no hay necesidad de hacer:
Código Delphi [-]
if(Form.Components[i] is TcxTextEdit) then
(Form.Components[i] as TcxTextEdit).Clear;
Es redundante y degrada el tamaño y velocidad del código.
Mucho mejor es:
Código Delphi [-]
if (Form.Components[i] is TcxTextEdit) then
TcxTextEdit(Form.Components[i]).Clear;
Saludos. 
|
Pues yo no le veo diferencia, ya que en Delphi ambas formas son equivalente:
Código Delphi
[-]if(Form.Components[i] is TcxTextEdit) then
(Form.Components[i] as TcxTextEdit).Clear;
es equivalente a:
Código Delphi
[-] if (Form.Components[i] is TcxTextEdit) then
TcxTextEdit(Form.Components[i]).Clear;
Lo único que puedo sugerir es que si
SOLO se quiere Iterar el ciclo con
solo Componentes que son descencientes de
TControl, es decir sólo con controles, pues en ese caso sería mejor usar la propiedad
ControlCount en lugar de
ComponentCount para optimizar la operación

, ya que la propiedad
ComponentCount toma en cuenta tambien todos los componentes que sean o no sean controles, por ejemplo : Los TQuery,TDataSource,TTable,TXPManifest,etc. y como veis en éste caso no necesito incluir ese tipo de componentes en el ciclo.

De esa forma el procedimiento Optimizado quedaría así:
Código Delphi
[-]procedure LimpaEdit(Form: TForm);
var
i: Integer;
begin
for i := 0 to Form.ControlCount - 1 do
begin
if(Form.Controls[i] is TcxTextEdit) then
(Form.Controls[i] as TcxTextEdit).Clear;
if(Form.Controls[i] is TcxLookupComboBox) then
(Form.Controls[i] as TcxLookupComboBox).Clear;
if(Form.Controls[i] is TcxCalcEdit) then
(Form.Controls[i] as TcxCalcEdit).Text := '0';
if(Form.Controls[i] is TcxDateEdit) then
(Form.Controls[i] as TcxDateEdit).Clear;
end;
end;
Saludos...
