![]() |
![]() |
| Paypal | 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
|
||||
|
||||
|
Trabajando con StringGrid
Hola amigos foristas, tengo un StringGrid el cual 5 columnas y una de ellas es solo para datos numericos, La situasion es la siguiente:
Cuando el usuario esta editando la columna numerica y esta poniendo numeros reales; internamente en el evento OnSetEditText de StringGrid se va sumando la columna y mostrando en un edit; el problema es cuando en ves de poner el caracter coma "," pone un punto , entonces ahi se produce un error al convertir a Float esa celda, quise solucionarlo haciendo una conversion llamando a un metodo que yo mismo me hize;pero cuando lo llamo la celda se seleciona con azul por defecto, y por tanto si el usuario sigue introduciedo decimales ,estos se reeplazan a los que antes habia escrito; Lo que quiero es la celda no se seleccione al al llamar a mi metodo,que internamente siga el cursor en donde corresponde. Aqui pongo mi metodo que transforma un string que tiene punto(.) por otro string que tenga coma(,):
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 Última edición por rgstuamigo fecha: 23-04-2010 a las 22:52:55. |
|
#2
|
||||
|
||||
|
Hola rgstuamigo, y que pasa si te introducen letras a parte del punto ¿como estas validando lo que se va introduciendo?, porque creo que sería mucho mejor que fueras validando a medida que introduce en tu celda, permitiendole solo ingresar numeros y la coma.
Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
|
#3
|
||||
|
||||
|
Bueno en realidad esta todo dentro de un
Todo me funciona bien, lo he probado poniendo normalmente , es decir con coma , pero ahora el cliente me dice que no le gusta con coma y que es mejor con punto, ya sabes tu por comodida. Solo quiero saber si existe una manera de desselecionar esa celda sin cambiar su contenido, poner el cursor en la ultima posicion, para seguir editando.
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 Última edición por rgstuamigo fecha: 10-02-2010 a las 14:42:47. |
|
#4
|
|||
|
|||
|
Hola, puedes tal como dice caro, capturar en el OnKeyDown
o bien, justo en el principio del onsetedittext
|
|
#5
|
||||
|
||||
|
punto a coma
Prueba asignando esto al evento OnKeyPress del StringGrid, esto reemplaza el punto por la coma.
Código Delphi [-] procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin if Key = '.' then Key:= ','; end; |
|
#6
|
||||
|
||||
|
Gracias A todos por compartir y responder, la verdad son diferentes formas de hacerlo y me han dado nuevas perspectivas de programcion, lo resolvi con el codigo de ecfisa pero tiene un pequeño detalle, que el evento se realiza para todas las columnas del stringGrid; como seria para hacerlo que solo cambie los puntos por las comas solo en una columna especifica.
Saludos.... ![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
|
#7
|
||||
|
||||
|
Hola de nuevo, primero para mi sería mucho mejor que controlaras en el momento que escribe, en vez de mostrale un mensaje que ha escrito mal, para ello puedes hacerlo de esta forma.
Ahora para que el cursor se vaya al final de todo lo que se ha escrito en esa celda se puede usar SelStart y SelLength, según esta pagina http://www.swissdelphicenter.ch/torr...ode.php?id=349 , se puede usar la propiedad ImplaceEditor del StringGrid. Mas o menos quedaría asi el codigo:
Para reemplazar el punto por la coma, sería mejor que utilizaras la función StringReplace, como te dice el amigo Coso. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
|
#8
|
||||
|
||||
|
Cita:
Otra cosita, por favor utiliza etiquetas delphi para encerrar tu codigo, así s eentedera y vera mucho mejor. [delphi ] [ /dephi] esatas etiquetas pero sin los espacios. Saluditos
__________________
Disfruten cada minuto de su vida a lado de sus seres queridos como si fuese el ultimo, uno nunca sabe lo que puede pasar. |
|
#9
|
||||
|
||||
|
Muchas Gracias caro y todos...por sus respuesta pero si alguien puede aguegar mas al asunto no esta demas que comparta su experiencia programando. Saludos....
![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
|
#10
|
||||
|
||||
|
solo en columna
Es sólo una comprobación mas.
Código Delphi [-] procedure TForm1.StringGrid1KeyPress(Sender: TObject; var Key: Char); begin with StringGrid1 do begin if (Key = '.') and ( Col = 0 ) then Key:= ','; // Col = 0,1,2... etc end; end; |
|
#11
|
||||
|
||||
|
Gracias ecfisa por responder y agregar tu opcion....Saludos
![]()
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7 |
|
#12
|
||||
|
||||
|
de nada
Me alegra que te haya servido.
|
![]() |
| Herramientas | Buscar en Tema |
| Desplegado | |
|
|
Temas Similares
|
||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Trabajando con ListView | Ledian_Fdez | OOP | 2 | 15-04-2010 23:22:22 |
| trabajando con ListView !!! | Ledian_Fdez | C++ Builder | 11 | 09-07-2008 22:43:01 |
| trabajando en red | jdg | C++ Builder | 2 | 18-02-2007 16:10:48 |
| Trabajando con ListBox | gsilvei | Varios | 1 | 11-07-2006 16:16:38 |
| Trabajando con DLL | b3nshi | Varios | 1 | 16-03-2005 18:21:55 |
|