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 06-10-2011
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
OnKeyPress dentro de DBGrid cell

Buen día amigos,

despues de mucho tiempo alejado del mundillo delphi, vuelvo a empezar. Y esperando siempre el buen consejo de los expertos del foro tengo una pequena duda.

Como hago para que una celda de un dbgrid acepte solo numeros? algo parecidoa como si lo hiciera en un Edit
Código:
if not (Key in ['0'..'9']) then      Key := #0;
saludos!
Responder Con Cita
  #2  
Antiguo 06-10-2011
beginner01 beginner01 is offline
Miembro
NULL
 
Registrado: mar 2011
Ubicación: República Dominicana
Posts: 181
Poder: 14
beginner01 Va por buen camino
Cita:
Empezado por Gaim2205 Ver Mensaje
Buen día amigos,

despues de mucho tiempo alejado del mundillo delphi, vuelvo a empezar. Y esperando siempre el buen consejo de los expertos del foro tengo una pequena duda.

Como hago para que una celda de un dbgrid acepte solo numeros? algo parecidoa como si lo hiciera en un Edit
Código:
if not (Key in ['0'..'9']) then      Key := #0;
saludos!
Saludos.

Si te refieres a una columna en especifico puedes probar con esto.

Código Delphi [-]
 if (not (key in ['0'..'9'])) and ((sender as TDBGrid).Col = 4)  then
 key := #0;

Cambia col = 4 por la columna a la que deseas aplicar.

Para que sea una celda en especifico se le debe agregar una condición mas.

Código Delphi [-]
 and ((sender as TDBGrid).Row = 1)
Responder Con Cita
  #3  
Antiguo 06-10-2011
Avatar de Gaim2205
Gaim2205 Gaim2205 is offline
Miembro
 
Registrado: ago 2007
Ubicación: Durango, Mexico
Posts: 144
Poder: 17
Gaim2205 Va por buen camino
Gracias por la respuesta, aunque debo especificar un poco mas, hay algo que no sabia y es que donde estoy trabajando ahora tengo que usar unos componentes propios, su reemplazo de DBGrid no tiene la propiedad Col, por tanto no puedo usarla. Hay alguna forma alternativa? tal vez los mas expertos sabran como modificar el comportamiento del componente para agregar esa funcionalidad?

Si a alguien le interesa la programacion de componentes, tengo el codigo fuente, asi que podriamos agregar esa funcionalidad juntos.
Responder Con Cita
  #4  
Antiguo 06-10-2011
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 22
José Luis Garcí Va camino a la fama
Si no recuerdo mal puedes usar
Código Delphi [-]
TStrinGrid(Dbgrid1).Col=4
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #5  
Antiguo 06-10-2011
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.

Con un TDBGrid otra posibilidad es:
Código Delphi [-]
procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  if (TDBGrid(Sender).SelectedField.FieldName = 'Nombre_del_Campo') and
     not(Key in [#8,#9,#13,'0'..'9']) then
  begin
    MessageBeep(MB_ICONERROR);
    Key:=#0;
  end;
end;

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 07-10-2011
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 Gaim2205.

Cita:
Como hago para que una celda de un dbgrid acepte solo numeros?
Leyendo bién tu primer post (cosa que parece que no hice antes), veo que entendí cualquier cosa . El código anterior verifica columna no celda.

Probá de esta forma:
Código Delphi [-]

type
  TDBGridEx = class(TDBGrid);

procedure TForm1.DBGrid1KeyPress(Sender: TObject; var Key: Char);
begin
  with TDBGridEx((Sender as TDBGrid)) do
    if(Col = ACol) and (Row= ARow) and not(Key in [#8,#9,#13,'0'..'9']) then
    begin
      MessageBeep(MB_ICONERROR);
      Key:= #0;
    end;
end;
...
ACol y ARow son variables de tipo Integer que almacenan columna y fila de la celda que sólo deberá aceptar números.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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
combobox dentro de dbgrid gonza_619 Varios 7 21-07-2016 03:25:39
Buscar dentro de un DBGrid FrianxD C++ Builder 5 08-11-2008 02:05:48
Cell de Grid que contenga objetos... The_Avatar OOP 5 28-11-2007 13:00:39
desmarcar cell en un StringGrid elcigarra OOP 1 18-10-2005 10:34:49
checkbox dentro de DBGrid empty Varios 1 30-03-2004 17:58:10


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


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