Ver Mensaje Individual
  #6  
Antiguo 13-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Reputación: 20
rgstuamigo Va por buen camino
Thumbs up

Cita:
Empezado por ecfisa Ver Mensaje
...
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
    // ya sabemos que es un TcxTextEdit...
      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;// se está haciendo un casting usando el operador dinámico "as"
es equivalente a:
Código Delphi [-]
   if (Form.Components[i] is TcxTextEdit) then
      TcxTextEdit(Form.Components[i]).Clear;//Se está haciendo casting sin ningun operador
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...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 13-10-2010 a las 22:28:45.
Responder Con Cita