Fórum busca em um listview #534711
16/10/2015
0
queria saber como fazer busca no listview com multidetail. Carrego os dados da tabela para o listview assim:
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
itemadd: TListViewItem;
begin
Lst_Cliente.Items.Clear;
Lst_Cliente.BeginUpdate;
dm.ClientDataSet1.Close;
dm.ClientDataSet1.Open;
dm.ClientDataSet1.First;
while not dm.ClientDataSet1.eof do
begin
itemadd:= Lst_Cliente.Items.Add;
itemadd.Detail:= dm.ClientDataSet1CLIENTEID.AsString;
itemadd.Text:= 'Razão: '+dm.ClientDataSet1RAZAO.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail1] := 'Fantasia: '+dm.ClientDataSet1FANT.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail2] := 'Endereço: '+dm.ClientDataSet1ENDERECO.AsString +' ' + dm.ClientDataSet1NUMERO.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail3] := 'Numero: '+dm.ClientDataSet1NUMERO.AsString;
dm.ClientDataSet1.Next;
end;
Lst_Cliente.EndUpdate;
dm.ClientDataSet1.Close;
end;
queria colocar um combobox e u edit quando estiver selecionado 'clienteid', 'razao', 'fantasia', 'endereço' e digitando em um edit ou no proprio search do listview ele filtrava por esse campo.
so nao tenho a menor ideia de como fazer......
procedure TForm1.SpeedButton1Click(Sender: TObject);
var
itemadd: TListViewItem;
begin
Lst_Cliente.Items.Clear;
Lst_Cliente.BeginUpdate;
dm.ClientDataSet1.Close;
dm.ClientDataSet1.Open;
dm.ClientDataSet1.First;
while not dm.ClientDataSet1.eof do
begin
itemadd:= Lst_Cliente.Items.Add;
itemadd.Detail:= dm.ClientDataSet1CLIENTEID.AsString;
itemadd.Text:= 'Razão: '+dm.ClientDataSet1RAZAO.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail1] := 'Fantasia: '+dm.ClientDataSet1FANT.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail2] := 'Endereço: '+dm.ClientDataSet1ENDERECO.AsString +' ' + dm.ClientDataSet1NUMERO.AsString;
itemadd.Data[TMultiDetailAppearanceNames.Detail3] := 'Numero: '+dm.ClientDataSet1NUMERO.AsString;
dm.ClientDataSet1.Next;
end;
Lst_Cliente.EndUpdate;
dm.ClientDataSet1.Close;
end;
queria colocar um combobox e u edit quando estiver selecionado 'clienteid', 'razao', 'fantasia', 'endereço' e digitando em um edit ou no proprio search do listview ele filtrava por esse campo.
so nao tenho a menor ideia de como fazer......

Nei
Curtir tópico
+ 0
Responder
Posts
10/11/2015
Rafael Bosco
Como você está fazendo o controle dos itens do ListView? Através de um INDEX ? Se sim, vou passar uma forma meio lógica, aí é só fazer umas alterações:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | procedure SearchByListView(const Locate: String; Filter: System.Char; ListView: TListView); var I: System.Integer; function Equals: String; begin if Filter = 'C' then //se for pesquisar pelo CLIENTEID Result := ListView.Items[I].Caption else Result := ListView.Items[I].SubItems[0]; //se não, procura pela FANTASIA (da pra fazer um CASE aqui se tiver mais condições) end begin for I := 0 to ListView.Items.Count -1 do begin if ((Pos(Locate, Equals) > 0) or (Locate = '')) then begin ListView.ItemIndex := I; ListView.Items[I].MakeVisible(True); Break; end; end; end; |
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)