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 19-07-2011
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Filtro en columnas del DBGRID

Hola a todos, quisiera preguntar si alguien conoce del algun componente
tipo DBGRID que permita establecer filtros de determinado campo mostrado
en la rejilla de datos haciendo click sobre el nombre de la columna. en otras
palabras lo que necesito es que al hacer click (primario o secundario) el nombre de la columna se convierta en un edit, por ejemplo, donde el usuario va
escribiendo y se va filtrando la informacion que contiene ese campo.

Gracias por sus atenciones
Responder Con Cita
  #2  
Antiguo 19-07-2011
Avatar de oscarac
[oscarac] oscarac is offline
Miembro Premium
 
Registrado: sep 2006
Ubicación: Lima - Perú
Posts: 2.010
Poder: 20
oscarac Va por buen camino
busca temas relacionados con busqueda incremental
eso te puede ayudar
__________________
Dulce Regalo que Satanas manda para mi.....
Responder Con Cita
  #3  
Antiguo 21-07-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 cmfab.
Cita:
lo que necesito es que al hacer click (primario o secundario) el nombre de la columna se convierta en un edit, por ejemplo, donde el usuario va
escribiendo y se va filtrando la informacion que contiene ese campo.
Supongo que te referís al título de la columna. Te pongo un ejemplo que hace lo que buscas.
Código Delphi [-]
...
type
  TDBGrid = class(DBGrids.TDBGrid);
  TForm1 = class(TForm)
    IBDatabase1: TIBDatabase;
    IBTransaction1: TIBTransaction;
    DataSource1: TDataSource;
    IBQuery1: TIBQuery;
    DBGrid1: TDBGrid;
    Edit1: TEdit;
    procedure FormShow(Sender: TObject);
    procedure DBGrid1TitleClick(Column: TColumn);
    procedure Edit1Enter(Sender: TObject);
    procedure Edit1Change(Sender: TObject);
  private
    FFieldName: string;
  public
  end;

var
  Form1: TForm1;

implementation  {$R *.dfm}

procedure TForm1.FormShow(Sender: TObject);
begin
  Edit1.Visible:= False;
  Edit1.CharCase:= ecUpperCase;
end;

procedure TForm1.DBGrid1TitleClick(Column: TColumn);
var
  R: TRect;
  CT: TColumnTitle;
begin
  FFieldName:= Column.Field.FieldName;
  CT:= TColumnTitle.Create(Column);
  try
    CT.Assign(Column.Title);
    R:= DBGrid1.CellRect(Column.Index+1,0);
    DBGrid1.Canvas.FillRect(R);
    with Edit1 do
    begin
      Left:= R.Left+1;
      Top:= R.Top+1;
      Width:= R.Right - R.Left +1;
      Height:=R.Bottom - R.Top +1;
      Visible:= True;
      SetFocus;
    end;
    Column.Title.Assign(CT);
  finally
    CT.Free;
  end;
end;

procedure TForm1.Edit1Enter(Sender: TObject);
begin
  TEdit(Sender).Text:= '';
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
  if Edit1.Text <> '' then
   with IBQuery1 do
   begin
     Close;
     SQL.Clear;
     SQL.Add('SELECT * FROM TU_TABLA');
     SQL.Add('WHERE UPPER('+FFieldName+') LIKE'+QuotedStr(Edit1.Text+'%'));
     Open;
   end;
end;
end.

Saludos.
__________________
Daniel Didriksen

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

Última edición por ecfisa fecha: 23-07-2011 a las 01:04:36.
Responder Con Cita
  #4  
Antiguo 23-07-2011
cmfab cmfab is offline
Miembro
 
Registrado: jun 2010
Posts: 419
Poder: 14
cmfab Va por buen camino
Hola gracias, disculpa por responder un poco tarde pero es que no estaba disponible. funciona bien solo tenderia que capturar el tipo de datos del campo para establecer el filtro adecuado.

gracias nuevamente
Responder Con Cita
  #5  
Antiguo 23-07-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 cmfab.

No sé con que componentes estás trabajando pero si te es posible hacerlo con una consulta SQL, te despreocupas del tipo de datos del campo. Siempre que te sea posible, claro está.

Saludos.
__________________
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
Copiar todo el resultado de un Filtro (DBGrid) en Tabla Lenny Varios 3 15-10-2010 01:03:46
Filtro DBEdit y DBGrid Lenny Varios 4 11-10-2010 09:16:15
DBGrid: Como redimensionar columnas si se redimensiona el dbGrid? quali OOP 6 08-02-2010 22:00:49
Duda con dbgrid como filtro de info myo Varios 1 23-03-2008 09:51:25
Filtro por selección en dbGrid. setry2 OOP 3 20-10-2004 14:23:07


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


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