Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-10-2003
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Question Saber que letra has borrado

Hola de nuevo

Siguiendo con mis primeros pasos, estoy desarrollando un edit propio de manera muy novata. Este edit coge numeros decimales (positivos o negativos). Mi ultimo problema a la hora de este desarrollo es que no consigo que cuando borre la coma, me deje volver a meterla hasta que borro todo de nuevo. Mi pregunta es como mirar el caracter que borro, y que si es una coma, poner una variable a 0 para que me active de nuevo el volver a meterla.

Os pego el código que he hecho, teniendo ese fallo y teniendo en cuenta que en esto de Delphi llevo poco más de una semana.


if (centigrados.Text='') then begin
if ( (Key<'0') or (Key>'9') ) and (Key<>#8) and (Key<>#45) then Key:=#0;
end
else begin

if (sw2=1) or (centigrados.Text='-') then begin
if ( (Key<'0') or (Key>'9') ) and (Key<>#8) then Key:=#0; end
else
if ( (Key<'0') or (Key>'9') ) and (Key<>#8) and (Key<>',') then Key:=#0;
end;

if (centigrados.Text='')then
sw2:=0;

if (Key=',') then
sw2:=1;

Espero críticas a la hora de programar, ya que al llevar tan poco tiempo, me gustaría quitarme esos malos hábitos a la hora de programar.

Un saludo

RyAr
Responder Con Cita
  #2  
Antiguo 29-10-2003
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
Cita:
Posteado originalmente por RyAr
Espero críticas a la hora de programar, ya que al llevar tan poco tiempo, me gustaría quitarme esos malos hábitos a la hora de programar.
Podrías comenzar por indentar correctamente el código. Utiliza la etiqueta CODE para que se respeten los espacios.

Una observación. Condicionales como

if ( (Key<'0') or (Key>'9') ) and (Key<>#8) and (Key<>#45) then Key:=#0;

pueden escreibirse de forma más prolija así:

if not (key in ['0'..'9', #8, #45]) then Key := #0;

En cuanto a tu pregunta pues de momento no creo que sea fácil saber qué caracter es el que borras pues esto implicaría que en el evento OnKeyPress cada vez que detectes un "backspace" mires en qué posición está el cursor en el Edit para entoncs ver cuál es el carcater a la izquierda.

Pienso que es mejor usar el evento OnChange y analizar cada vez toda la cadena que hasta el momento haya sido introducida.

(Ahhh!, si Delphi tuviese expresiones regulares....)

// Saludos
Responder Con Cita
  #3  
Antiguo 29-10-2003
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
Una cosa más:

En lo que te menciono de los condicionales, en realidad ambos no son equivalentes pero es que el tuyo me parece que es incorrecto ya que aceptaría cualquier caracter por debajo de '0' (ascii 48) que no sea ni '-' ni bksp y cualquier carcater por arriba del '9' (ascii 57). Esto incluye caracteres como '(', ')', '/', todas las letras, etc.

// Saludos
Responder Con Cita
  #4  
Antiguo 29-10-2003
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Cómo termino el tema de las RxLib? No te sirvió el TCurrencyEdit que traen?
Responder Con Cita
  #5  
Antiguo 29-10-2003
RyAr RyAr is offline
Miembro
 
Registrado: oct 2003
Posts: 74
Poder: 21
RyAr Va por buen camino
Question

Si que me sirvio de maravilla, pero como me gusta lo de uno propio me lance a ver si podia realizar yo mismo que cogiera solo los valores que yo queria, y solo queda lo de borrar la coma.

Esto de Delphi me está gustando más que C, por lo que prefiero empezar aprediendo antes que me lo de todo ehcho ya los neuvos componentes

De todas formas tu sugerencia de las RxLib me vino muy bien para aclararme en otras cosas, así que te lo agradezco

Un saludo y gracias.

RyAr
Responder Con Cita
  #6  
Antiguo 29-10-2003
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Aprovechando que las RxLibs traen sus fuentes, puedes husmear el código del TCurrencyEdit... seguramente esto te hará conocer un poco como esta armada la VCL.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
Respuesta



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


La franja horaria es GMT +2. Ahora son las 08:44:47.


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