Ver Mensaje Individual
  #3  
Antiguo 08-11-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.284
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por Durbed
...Hay alguna forma de hacerlo de forma general para no repetir el codigo para cada componente?
Puedes crear un único evento y asignar el mismo a todos los componentes.

Código Delphi [-]
   if (Sender is TEdit) then begin
     if (TEdit(Sender).MaxLength <> 0) then begin
       if (Length(TEdit(Sender).Text) = TEdit(Sender).MaxLength) then begin
         Self.Perform(WM_NEXTDLGCTL, 0{Next}, 0);
       end;
     end;
   end;

Si no quieres hacer la asignación "a mano" puedes hacerla por código al crear/visualizar el form por ejemplo (utilizando el OnChange); Es lo mismo que harías "a mano" asignando todos los eventos al mismo procedimiento, pero de forma automática.

Código Delphi [-]
   for i := 0 to (Panel1.ControlCount - 1) do begin
     if (Panel1.Controls[i] is TEdit) then begin
       TEdit(Panel1.Controls[i]).OnChange := _GoNext;
     end;
   end;

La otra opción es crear un componente (derivado de TEdit o TCustomEdit) y añadirle la propiedad que te gestione éste comportamiento. La implementación básicamente es la misma realizada arriba.
Puedes implementar el comportamiento sobreescribiendo el método Change de TCustomEdit.

Código Delphi [-]
   procedure Change; override;
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita