Ver Mensaje Individual
  #15  
Antiguo 20-09-2006
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Reputación: 0
HySTD Va por buen camino
Bueno eso que has dicho es cierto, pero tampoco hay que dramatizar , tiene facil solucion, tan solo hay que modificar un aspecto:

cada vez que se pulse una tecla, en vez de contar los caracteres que pulsamos, (incluyendo el BackSpace o el Delete...), podemos capturar la longitud de la cadena contenida en el TEdit +1 (puesto que el evento ocurre antes de que aparezca el caracter pulsado), y si es multiplo de 3 (puesto que '/' ocupa las posiciones 3n), entonces añadimos el '/', con la condicion de filtrar solo aquellas teclas que nos interesan (todas menos BackSpace y Delete). Ahi os dejo el codigo:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
var
longitud: integer;
begin
longitud:=Length(Edit1.Text)+1;
Edit1.SelStart:=longitud-1;  //añadido... ver final del post
if ((longitud mod 3)=0) and (longitud>2) and (ord(key)<>VK_BACK) and (ord(key)<>VK_DELETE) then begin
        Edit1.Text:=Edit1.Text+'/';
        Edit1.SelStart:=longitud;
end;
end;

la linea comentada como //añadido... sirve para que, por si algun casual se posiciona el cursor en una posicion distinta a la ultima, al presionar la tecla, se escriba forzosamente al final...(esta linea es opcional, a gusto de lo que se quiera...)

Bueno eso es todo. Saludos

Última edición por HySTD fecha: 20-09-2006 a las 15:26:09.
Responder Con Cita