Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Máscara de Rut Chileno (https://www.clubdelphi.com/foros/showthread.php?t=85487)

Detenido 24-03-2014 01:39:47

Máscara de Rut Chileno
 
Estimados, tengo el siguiente problemita. El formato del rut Chileno es 12.345.678-9 el cual manejo con un componente maskedit en su evento OnExit
Código Delphi [-]
maskedit1.EditMask:='00.000.000-C;1;_';
con esto cuando el usuario ingresa un número de 9 dígitos esto funciona. El problema es que algunos rut tienen 8 dígitos por lo que al momento de aplicar la máscara queda así 12.345.678-_ provocando un error de ingreso. Existe alguna forma de ingresar un '0' o un espacio vacío a la izquierda cuando el rut sea de 8 dígitos?. Gracias.

duilioisola 24-03-2014 11:54:18

Agrega esto en el evento OnExit.

Código Delphi [-]
// Si la longitud es menor a 9 digitos, que agregue un 0 delante
if (Length(RUT.Text < 9) then RUT.Text := '0'+RUT.Text;

MAXIUM 24-03-2014 15:16:24

1 Archivos Adjunto(s)
Mascara: !99.999.999;1;0

Edit1 en modo solo lectura. Te admitirá todos los rangos de RUT. Puedes ampliar la mascara para RUT más largos como 100.000.000-K -> !999.999.999;1;0

Código Delphi [-]
procedure TForm1.MaskEdit1Change(Sender: TObject);
Var RutParcial: ShortString;
begin
     RutParcial := IntToStr(StrToInt(QuitaMiles(MaskEdit1.EditText)));
     Edit1.Text:= '-' + DigitoVerificador(RutParcial);
end;

Hay que entender que el dígito verificador tiene su uso, que es justamente verificar. Esta unit te calcula el dígito cuando vas ingresando. Ahí tu ves como lo usas. Yo lo deje así, cosa que cuando ingresen el RUT (ingresar sin - ni dígito verificador), el usuario pueda comprobar si coincide el número verificador con el que le están indicando en el momento.

Adjunto Unit para competar :cool:

Detenido 24-03-2014 15:24:51

Sencillo y funciona perfecto. Muchas gracias. :D

Detenido 24-03-2014 15:30:51

Muchas gracias a ambos, ahora gracias a ustedes mu aplicación funciona de maravillas. :D


La franja horaria es GMT +2. Ahora son las 06:05:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi