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......
Nei

Nei

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

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar