Ver Mensaje Individual
  #3  
Antiguo 31-07-2010
Avatar de afunez2007
afunez2007 afunez2007 is offline
Miembro
 
Registrado: oct 2007
Ubicación: La Ceiba, Honduras
Posts: 170
Reputación: 17
afunez2007 Va por buen camino
Lightbulb

Hola Jafera

Yo antes usaba un metodo parecido al tuyo para hacer las busquedas, aunque despues me encontre otro mas practico:
Antes usaba este metodo:
1.- un JvDBFindEdit que tiene asociado el datasourse del grid, este compontente que pertence a Jedi Vcl project, hace el trabajo por ti, y tiene 2 modos locate y filter, ademas te permite buscar por fisrtpos o anypos.
2.- un Combo box con los posibles criterios de busqueda (campos)
3.- En el evento OnCloseUp del compo el siguiente codigo:
Código Delphi [-]
procedure TfrmBuscArt.cbbBuscarPorCloseUp(Sender: TObject);
begin
if cbbBuscarPor.ItemIndex=0 then
begin
  JvDBFindEdit1.DataField:='DESCR';
end;
if cbbBuscarPor.ItemIndex=1 then
begin
  JvDBFindEdit1.DataField:='CLV_ART';
end;
if cbbBuscarPor.ItemIndex=2 then
begin
  JvDBFindEdit1.DataField:='CLV_ALTER';
end;
end;

El metodo que utilizo ahora es el siguiente:
1.- un JvDBFindEdit que tiene asociado el datasourse del grid, este compontente que pertence a Jedi Vcl project, hace el trabajo por ti, y tiene 2 modos locate y filter, ademas te permite buscar por fisrtpos o anypos.
2.- Quite el ComboBox ya que este me limita los criterios de busqueda a los que aparecen en el listado y cambie por hacer un evento que cuando hagas click en el titulo de la columna se cambie de criterio de busqueda o sea el campo de la columna que cliqueaste, para esto debes tener activada la propiedad TitleButtons en True en el grid.
3.- En el evento OnTitleBtnClick del grid el siguiente codigo:
Código Delphi [-]
procedure TFORM15.JvDBGrid1TitleBtnClick(Sender: TObject; ACol: Integer;
  Field: TField);
begin
    edtDESCR.DataField:=JvDBGrid1.Columns[Acol].FieldName;
    Caption:='Busqueda de Articulos por '+JvDBGrid1.Columns[Acol].Title.Caption;
    edtDESCR.Find(edtDESCR.Text);
    chkExist.OnClick(Sender);

end;

edtDESCR es el nombre del objeto JvDBFindEdit que utilizo para la busqueda.

Tambien para cambiar el modo de busqueda en cualquier posicion o primera posicion lo hago con un checkbox y el siguiente codigo:
Código Delphi [-]
procedure TFORM15.CheckBox1Click(Sender: TObject);
begin
  if CHECKBOX1.Checked=True then
  begin
    edtDESCR.FindMode:=fmAnyPos;
    edtDESCR.Find(edtDESCR.Text);
  end;
  if CHECKBOX1.Checked=False then
  begin
    edtDESCR.FindMode:=fmFirstPos;
    edtDESCR.Find(edtDESCR.Text);
  end;
end;

Espero te sirvan estas ideas y cualquier duda no mas escribes

Saludos
__________________
Si robas, roba un beso, si mientes que sea por amor y si engañas que sea a la muerte!!
Responder Con Cita