Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 26-08-2015
heiverp heiverp is offline
Registrado
NULL
 
Registrado: ago 2015
Posts: 8
Poder: 0
heiverp Va por buen camino
Exclamation Limitar caracteres en un dbgrid

Buenas Tardes

Tengo un leve problema con un dbgrid y es que tengo una columna llamada edad en la cual al ingresar datos se debe validar que solamente se puedan digitar 2 caracteres, si se intentan digitar mas no lo permita,

alguien tiene idea de como hacerlo, me he matado buscando, parecía ser fácil pero no
Responder Con Cita
  #2  
Antiguo 26-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola heiverp, bienvenido a Club Delphi

Y como es costumbre cuando ingresan por primera vez, te invitamos a que leas nuestra guía de estilo.

Si es de tipo caracter, crea los campos persistentes en tu DataSet (*) y luego agrega este código al evento OnCreate del formulario en que reside el DBGrid:
Código Delphi [-]
procedure TForm.FormCreate(Sender: TObject);
var
  ds: TDataSet;
begin
  ds := DBGrid1.DataSource.DataSet;
  ds.Close;
  ds.FieldByName('EDAD').Size := 2; // (EDAD : nombre de columna que corresponda en la tabla)
  ds.Open;
end;
(*)
  • Click derecho sobre el componente DataSet -> Fields Editor...
  • Click derecho sobre la ventana emergente -> Add all fields.
Nota: También puedes hacerlo desde el Object Inspector, sobre el campo persistente en tiempo de diseño sin necesidad de código.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 27-08-2015 a las 00:03:52.
Responder Con Cita
  #3  
Antiguo 27-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Daniel,

Porque es necesario que sean persistentes los campos para la primera solucion?
Responder Con Cita
  #4  
Antiguo 27-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola de nuevo.

Recordaba haber tratado caso similar, pero no podía encontrarlo... Aquí tenes otra forma de limitar los caracteres: escribiendo en dbgrid

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #5  
Antiguo 27-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Muy interesante, acabo de probarlo y se llega a un callejon sin salida:

Código Delphi [-]
  ds.Open;
  ds.FieldByName('algo').Size := 10; // --> can't do that on an opened dataset

  ds.Close;
  ds.FieldByName('algo') // --> can't do that on a closed dataset
Responder Con Cita
  #6  
Antiguo 27-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustín.

Es realmente extraño... ¿ Creaste previamente los campos persistentes ?

Ejemplo sobre dbdemos:
Código Delphi [-]
procedure TForm1.FormCreate(Sender: TObject);
var
  ds: TDataSet;
begin
  ds := DBGrid1.DataSource.DataSet;
  ds.Close;
  ds.FieldByName('Name').Size := 2;
  ds.Open;
end;

Resultado:


Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #7  
Antiguo 27-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
No, justamente queria probar eso mismo: Si era posible hacerlo sin declarar campos persistentes. Por lo general trabajo sin campos persistentes y a nivel del TDataSet directamente. El diseñador RAD me gusta usarlo solo para la parte de colocar los controles, los aligns.. y poco mas

Tengo por costumbre hacer todo el trabajo de datos via codigo, usando clases (y mas recientemente, interfaces) que hacen todo el trabajo sucio. Lo hago de esta manera porque en un solo pantallazo tengo centralizado todas las cuestiones de formato, validaciones, nombres, mascaras.. etc. Sino ir de un lado para otro entre vista de form, vista de codigo, me termino perdiendo.

saludos!
Responder Con Cita
  #8  
Antiguo 27-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola Agustín.
Cita:
Empezado por AgustinOrtu Ver Mensaje
Daniel,

Porque es necesario que sean persistentes los campos para la primera solucion?
Recién veo este mensaje , disculpas.

Creo que el motivo es que para modificar la propiedad Size, el TDataSet debe estar cerrado y en ese punto el método FieldByName no tiene conocimiento de los campos de la tabla, si previamente no fueron creados de forma persistente.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 27-08-2015
heiverp heiverp is offline
Registrado
NULL
 
Registrado: ago 2015
Posts: 8
Poder: 0
heiverp Va por buen camino
Hola Ecfisa

Agradezco tu ayuda, pero resulta que el campo no es tipo carácter, es un campo numérico por lo tanto no tiene la propiedad size.
Responder Con Cita
  #10  
Antiguo 27-08-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Valida en el OnBeforePost del DataSet
Responder Con Cita
  #11  
Antiguo 27-08-2015
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola heiverp
Cita:
Empezado por heiverp Ver Mensaje
Hola Ecfisa

Agradezco tu ayuda, pero resulta que el campo no es tipo carácter, es un campo numérico por lo tanto no tiene la propiedad size.
En el mensaje #4 te sugerí otro modo que funciona independientemente del tipo del campo.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #12  
Antiguo 27-08-2015
heiverp heiverp is offline
Registrado
NULL
 
Registrado: ago 2015
Posts: 8
Poder: 0
heiverp Va por buen camino
Muchas gracias
efectivamente de ese modo que me comentas se limito en el evento keypress
Me has salvado la vida

Emmm soy nuevo acá como hago para puntuar tu respuesta y para dar tema como resuelto
Responder Con Cita
  #13  
Antiguo 27-08-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por heiverp Ver Mensaje
Emmm soy nuevo acá como hago para puntuar tu respuesta y para dar tema como resuelto
En unas semanas podrás hacerlo, estamos preparando una remodelación de los foros, gracias
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Limitar el nº de caracteres en un Edit Javier_A OOP 4 04-04-2013 19:57:51
limitar Número de caracteres de un DBGRid georgejg Varios 8 29-04-2008 14:21:26
Limitar Caracteres en un Memo jlalvarez OOP 5 03-07-2007 19:06:44
Limitar caracteres en un edits. Arturo Cabrera C++ Builder 3 11-05-2006 16:41:12
Limitar caracteres en DBEdit omy Varios 5 05-10-2005 03:39:34


La franja horaria es GMT +2. Ahora son las 07:16:14.


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