FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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 |
#2
|
||||
|
||||
Cita:
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 |
#3
|
||||
|
||||
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 |
#4
|
|||
|
|||
Cómo termino el tema de las RxLib? No te sirvió el TCurrencyEdit que traen?
|
#5
|
|||
|
|||
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 |
#6
|
||||
|
||||
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. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
|