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, 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;