Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-09-2006
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Poder: 0
HySTD Va por buen camino
Hola buenas, pienso que este problema se puede resolver de una manera mucho mas facil:

Código Delphi [-]
...
type
TForm1 = class(TForm)
Edit1: TEdit;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
contador: integer;
public
{ Public declarations }
end;
 
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
contador:=contador+1;
if ((contador mod 2)=0) and (contador>2) then begin
Edit1.Text:=Edit1.Text+'/';
Edit1.SelStart:=Length(Edit1.Text);
end;
end;
 
procedure TForm1.FormCreate(Sender: TObject);
begin
contador:=1;
Edit1.Text:='';
end;
 
 
{contador es una variable de tipo entero, que puedes declarar por ejemplo en el private de la TForm. Debes inicializarla: contador:=1; en el OnCreate de la Form, tal y como he puesto en el ejemplo...}


Saludos

Última edición por HySTD fecha: 17-09-2006 a las 06:53:32.
Responder Con Cita
  #2  
Antiguo 18-09-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
¿como o porque es eso más fácil que utilizar un DTPicker?
__________________

Responder Con Cita
  #3  
Antiguo 18-09-2006
Fingolfinmx Fingolfinmx is offline
Registrado
 
Registrado: sep 2006
Posts: 7
Poder: 0
Fingolfinmx Va por buen camino
Gracias HySTD funciona bien el codigo y aclaraste perfectamente mi duda,
use el maskedit que me dijeron y no me agrado mucho. supongo que esta linea :

Edit1.SelStart:=Length(Edit1.Text);

posiciona el cursor de texto para ke puedas estar almacenando un edit1.text y escribiendo continuamente como aqui:

Edit1.Text:=Edit1.Text+'/';

sin que te borre la otra entrada.

muchas gracias por su tiempo. seguire molestandolos mas a futuro tenganlo por seguro.
Responder Con Cita
  #4  
Antiguo 18-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
¿Y qué pasa cuando borras un caracter con BackSpace o DELETE? ¿Lo has probado?

// Saludos
Responder Con Cita
  #5  
Antiguo 19-09-2006
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Poder: 0
HySTD Va por buen camino
Eso tiene facil solucion. Haces que el contador sólo cuente cuando lo desees:

if (key<>VK_DELETE) or (key<>VK_SPACE) then begin
inc(contador);
...
end;

Asi ignoras si se pulsa espacio o supr.

La unica ventaja de realizarlo de esta manera es que así escribes tu el código (que es mas divertido), a utilizar otros componentes y/o otras funciones ya implementadas, que por otro lado están muy bien... Cada uno hace lo que quiere, y el quería usar un TEdit y utilizar el evento OnKeyPress.

Saludos
Responder Con Cita
  #6  
Antiguo 19-09-2006
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Ya. Entonces el código queda así:

Código Delphi [-]
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  // supongo que por OR querías decir AND
  if (Ord(Key) <> VK_DELETE) and (Ord(Key) <> VK_BACK) then
  begin
    Contador := Contador + 1;
  end;

  if ((Contador mod 2) = 0) and (Contador > 2) then
  begin
    Edit1.Text := Edit1.Text + '/';
    Edit1.SelStart := Length(Edit1.Text);
  end;
end;


Pero si escribo, por decir algo, "1", luego BACKSPACE, luego "2" y "3", en el Edit aparece "2/3".

Ya no está resultando "mucho más fácil", ¿no crees?

// Saludos
Responder Con Cita
  #7  
Antiguo 20-09-2006
HySTD HySTD is offline
Miembro
 
Registrado: sep 2006
Posts: 15
Poder: 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
  #8  
Antiguo 20-09-2006
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.740
Poder: 26
ContraVeneno Va por buen camino
¿que pasaría cuado un usuario copia una fecha incorrecta de algún otro lado y la pega en este control?
__________________

Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Como agrego un modulo a varios proyectos Rmartin Varios 1 14-08-2006 19:46:45
Como Realizar una consulta desde un Tedit? ing.cagn SQL 7 06-01-2006 20:47:12
tchar , como agrego datos ? genarol Varios 3 29-11-2004 19:43:18
Pasar el valor de un TEdit dentro de un StringGrid a otro TEdit que está fuera atirado Varios 4 11-09-2004 19:13:48
Como agrego el componente BDEClientDataSet en delphi 7 xtrem77 Conexión con bases de datos 2 20-11-2003 00:31:57


La franja horaria es GMT +2. Ahora son las 21:37:07.


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
Copyright 1996-2007 Club Delphi