Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-10-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Columna en DBgrid

Hola a todos, tengo un DBGrid con 20 columnas que muestran diferentes campos de una tabla. lo que necesito es que cuando filtre algun valor del campo "descripcion" que es por ejemplo la columna # 18 la grilla se posicione en dicha columna con los valores filtrados. espero me haya explicado correctamente. desde ya mil gracias
Responder Con Cita
  #2  
Antiguo 18-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Lightbulb

Si te estoy entendiendo bien ,para poder cambiar el foco (Focus) de seleccion entre columna en un DbGrid podrías usar la propiedad SelectedIndex.
Por ejemplo:
Código Delphi [-]
DBGrid1.SelectedIndex:=0;//<- Hago que la primer columna tenga el foco
DBGrid1.SelectedIndex:=1;//<-Hago que la segunda columna tenga el foco
....etc.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #3  
Antiguo 18-10-2010
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Gracias por la pronta respuesta pero lo que tengo es el nombre del campo. como accedo al index ?
Responder Con Cita
  #4  
Antiguo 19-10-2010
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
Cita:
Empezado por cmfab Ver Mensaje
Gracias por la pronta respuesta pero lo que tengo es el nombre del campo. como accedo al index ?
Hola.

Una forma podría ser:
Código Delphi [-]
function GetIndex(Grid: TDBGrid; Nombre: string): Integer;
var
  i: Integer;
begin
  Result:= -1;
  for i:= 0 to Grid.FieldCount -1 do
    if Nombre = Grid.Fields[i].FieldName then
    begin
      Result:= i;
      Exit;
    end;
end;

Ejemplo de llamada:
Código Delphi [-]
...
var
  Inx: Integer;
begin
  Inx:= GetIndex2(DBGrid1,'nombre_del_campo');
  if Inx > -1 then  
  ...

Aunque en tu caso la verificación del if > -1, es innecesaria por que se supone que el nombre de campo lo obtenes de un DataSet...

Saludos.

Última edición por ecfisa fecha: 19-10-2010 a las 01:18:21.
Responder Con Cita
  #5  
Antiguo 19-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Arrow

Pues no le veo el problema..., tranquilamente se puede conseguir el indice por el nombre del campo(columna) de la siguiente manera:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
var indice:Integer;
begin
indice:=DBGrid1.DataSource.DataSet.FieldByName('descripcion').Index;//<--Obtengo el indice de la columna
DBGrid1.SelectedIndex:=indice;// se lo asigno para que la seleccion pase a esa columna
DBGrid1.SetFocus;// me aseguro que el dbGrid tenga el foco
end;
Espero sea lo que buscas....
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7

Última edición por rgstuamigo fecha: 19-10-2010 a las 01:20:32.
Responder Con Cita
  #6  
Antiguo 19-10-2010
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
Cita:
Empezado por rgstuamigo Ver Mensaje
Pues no le veo el problema..., tranquilamente se puede conseguir el indice por el nombre del campo(columna) de la siguiente manera:
Mucho pero mucho mejor.

Lo buscaba en el DBGrid, sabía que por ahí andaba... pero no lo encontré.

Saludos.

Última edición por ecfisa fecha: 19-10-2010 a las 01:24:45.
Responder Con Cita
  #7  
Antiguo 19-10-2010
Avatar de rgstuamigo
rgstuamigo rgstuamigo is offline
Miembro
 
Registrado: jul 2008
Ubicación: Santa Cruz de la Sierra-Bolivia
Posts: 1.646
Poder: 17
rgstuamigo Va por buen camino
Thumbs up

Cita:
Empezado por ecfisa Ver Mensaje
...
Lo buscaba en el DBGrid, sabía que por ahí andaba... pero no lo encontré.
No te preocupes que a mí me suele pasar muchas veces..., ademas creo que mi código anterior no está muy pulido, pues creo que debería tener una sentencia "IF" antes antes de la asignacion ala propiedad SelectedIndex del DBGrid.. En todo caso la idea está planteada y por ahí va la cosa.
Saludos...
__________________
"Pedid, y se os dará; buscad, y hallaréis; llamad, y se os abrirá." Mt.7:7
Responder Con Cita
  #8  
Antiguo 19-10-2010
cloayza cloayza is offline
Miembro
 
Registrado: may 2003
Ubicación: San Pedro de la Paz, Chile
Posts: 915
Poder: 23
cloayza Tiene un aura espectacularcloayza Tiene un aura espectacular
!!OJO amigos...!!

Existe una diferencia importante entre ambos trozos de codigo expuestos aqui.

Veamos a que me refiero

Vamos a suponer que mi dataset tiene los siguientes campos
Index -> 0 1 2
Dataset->Codigo, Descripcion, Valor

Y en la grilla yo defini los campos en este order
Index-> 0 1 2
Grid - >Codigo, Valor, Descripcion

Si yo quiero obtener el indice del campo Descripcion que esta en la grilla, cual seria el indice correcto?

Segun codigo de rgstuamigo seria 1
Segun codigo de ecfisa seria 2

El correcto seria 2. Salvo que el order de los campos en la grilla y en el dataset sea el mismo.

Saludos.
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
Hacer que una columna de un DbGrid aparezca distinta según valor Aprendiendo OOP 11 30-11-2018 14:47:20
DBGrid + Columna (Icógnita) ozrics OOP 3 07-12-2009 12:27:07
Poner una columna de un DBGrid como columna Fija rgstuamigo OOP 4 04-03-2009 21:54:38
pintar columna DBGRid Coco_jac Varios 1 02-02-2006 23:54:59
Dar Formato a una columna de un dbgrid Josep Lluis Varios 3 20-05-2005 10:03:20


La franja horaria es GMT +2. Ahora son las 05:12:26.


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