Club Delphi  
    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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cool Quiero al escribir en un dxDBGrid sólo números

Hola

Si quieres escribir sólo números , en cualquier control ,pues pones en el OnKeyPress :

Código Delphi [-]
if not (key in ['0'..'9',#8]) then key:=#0;

vale , pero yo tengo un control dxDBGrid , el DBGrid del DevExpress , supongo que en el dbGrid será lo mismo .

Tengo une evento GetText , que va analizando lo que vas escribiendo.

Es así :

Código Delphi [-]
procedure TFDefineFiltroCD.DBGridColumn1GetText(Sender: TObject;
  ANode: TdxTreeListNode; var AText: String);
begin
end;

Ahí es donde habría que escribir el código , la variable ANode , pues la podemos obviar , y AText , registra lo que llevas escrito , ahí es donde veo yo que se puede poner el código adecuado .

Pero realmente no sé como hacerlo .

A ver si a alguien se le ocurre algo.

Un saludo
Responder Con Cita
  #2  
Antiguo 13-06-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Mmm...

No conozco el dxDBGrid, pero con el DBGrid usas el mismo evento (OnKeyPress), y lo filtras dependiendo del SelectedField...

Saludos.
Responder Con Cita
  #3  
Antiguo 13-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
No me vale el DBGrid , por que el evento es sólo para un columna , entonces en el evento de la columna no tiene el onkeypress ni existe los tipos de columna del otro componente .
Responder Con Cita
  #4  
Antiguo 14-06-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Si el Grid va a contener siempre los mismos datos, en lugar de dejar que se llene automáticamente con el dataset, puede definir los campos y definirles el tipo de dato que debe contener, enlazando cada columna a su campo correspodiente en el dataset.
__________________

Responder Con Cita
  #5  
Antiguo 14-06-2007
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:
Empezado por David
No me vale el DBGrid
¿Lo probaste o lo desechaste así sin más? El evento OnKeyPress del Grid será para todas las columnas pero ahí verificas la propiedad SelectedField para saber si aplicar o no la restricción.

Por otra parte, puedes usar la propiedad ValidChars del campo correspondiente para limitar los caracteres válidos.

// Saludos
Responder Con Cita
  #6  
Antiguo 14-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Al final lo he hecho por el evento onkeypress no de la columna sino del dxDBGrid.

Ahora me gustaria saber si existe alguna manera de poder controlar los campos Float , por que si permites escribir números y la coma , puede escribir esto :

11,33,11,1

No sé si hay algún código preparado para los float .
Responder Con Cita
  #7  
Antiguo 14-06-2007
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:
Empezado por David
Ahora me gustaria saber si existe alguna manera de poder controlar los campos Float , por que si permites escribir números y la coma , puede escribir esto :

11,33,11,1
Entonces parece que no estás usando correctamente tu base de datos. Si el tipo de datos es un tipo real, el mismo control te impedirá poner poner esos datos. A final de cuentas es como dice ContraVeneno, si usas el tipo de datos correcto, no deberías tener que preocuparte por este tipo de validaciones.

// Saludos
Responder Con Cita
  #8  
Antiguo 15-06-2007
Avatar de cHackAll
[cHackAll] cHackAll is offline
Baneado?
 
Registrado: oct 2006
Posts: 2.159
Poder: 20
cHackAll Va por buen camino
Cool Me deberia apodar DIVag0

Yo decia... me siento desechado .
Pero bueno, para esta nueva eventualidad y usando la misma logica metele un if (Key = ',') and (Pos(',', SelectedField....) = 0) then ....

Pero claro puedo estar cayendo un error .

Saludos.
Responder Con Cita
  #9  
Antiguo 16-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cita:
Empezado por roman
Entonces parece que no estás usando correctamente tu base de datos. Si el tipo de datos es un tipo real, el mismo control te impedirá poner poner esos datos. A final de cuentas es como dice ContraVeneno, si usas el tipo de datos correcto, no deberías tener que preocuparte por este tipo de validaciones.

// Saludos
Es que no estoy utilizando una base de datos , realmente utilizo el componente como editor . Por eso necesito cierto código que me realice esas validaciones , ya lo tengo para la fecha y los integer , los string obviamente permito todo y me falta los númericos , que me permita una sóla , y lo demás sólo números y 2 decimales .
Responder Con Cita
  #10  
Antiguo 16-06-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Me parece David, que te la estas complicando demasiado y estas tratando de inventar el hilo negro.

No es por desanimarte ni nada por el estilo, es simplemente que este tipo de cosas ya se han visto mil veces. Y te aseguro que en tu código para validar fechas, tienes algún error y se puede escribir una fecha que no has considerado.

Te digo esto porque para empezar, un DBGrid debería utilizarse cuando se utilizan bases de datos... vamos, que por eso se llama DBGrid (Data Base Grid). Y si tu no estas utilizando bases de datos, entonces este no es el mejor componente.

Ahora como te propuse al principio, lo mejor es que definas las columnas que va a contener el Grid y a estas columnas les definas el Tipo de dato que va a contener. Haciendo eso, NO tendrás que realizar ninguna validación ni utilizar ningún código extra; el mismo componente se encargará de hacerlo.

Pero como dije, me parece MUY extraño que estes utilizando un DBGrid cuando no utilizas una base de datos...

__________________

Responder Con Cita
  #11  
Antiguo 16-06-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Explico lo que estoy haciendo , es un filtro .

El dxDBGrid (el grid de Developer Express) , se asocia a un dataset vacio , creado en memoria , se llena la primera columna con los nombres de la base de datos , la segunda columna con las condiciones , por ejemplo , empieza por ... , mayor que ... ,etc... y en la tercera columna el usuario escribe el código por el que quiere escribir .

Así pues aparece un grid vacio , el usuario habre un desplegable en la primera celda de la primera columna y aparecen todos los nombre por los que puede filtrar , luego en la segunda abre otro desplegable donde apareceran todos las condiciones y en la tercera ya no hay desplegable sino simplemente el usuario edita el valor a dar .

Por ejemplo
cantidad mayor que .......
fecha igual a ...
Dirección contiene ...

Esto ya esta conseguido , la idea es pues si elige una fecha que sólo escriba formato fecha (esto esta conseguido) , si elige un integer que sólo escriba números (también esta conseguido) y si elige un numerico (float, currency ,etc...) que pueda escribir sólo número decimal hasta dos .

Es decir , hago que el grid funcione como 2 combobox y en TEdit y a medida que va añadiendo filas , pues es como si añadiera abajo otro combobox donde esta los nombres de la base de datos , otro donde esta la condición y un TEdit donde el usuario escribe el valor .

La pregunta seria identica que si dijera , como puedo hacer que un edit , unas veces valga para fecha , otras para integer y otras para número . Eso sí las 2 primeras (fecha e integer ) estan resueltas y funcionan bien .

bueno , esto es a modo decorativo ,que tampoco es tan importante , lo que si es de vital importancia es el post que he puesto en el foro de base de datos .


Un saludo
Responder Con Cita
  #12  
Antiguo 18-06-2007
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
A ver, por un lado dices:

Cita:
Empezado por David en mensaje #9
Es que no estoy utilizando una base de datos
y por otro dices

Cita:
Empezado por David en mensaje #11
se llena la primera columna con los nombres de la base de datos
Yo no le veo mucho sentido.

// Saludos
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
Solo Te Quiero Como Amigo gatosoft Humor 30 06-06-2008 20:13:21
En un DBEdit quiero mostrar solo dos decimales Ericato Varios 4 30-03-2007 17:20:43
Escribir Texto utilizando Numeros :) DTAR Varios 27 01-02-2007 21:27:57
caja de texto que se pueda escribir numeros cahosoft JAVA 1 30-12-2003 21:44:33
Escribir numeros mosorio OOP 1 23-06-2003 16:48:14


La franja horaria es GMT +2. Ahora son las 13:46:46.


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