Fórum Ajuda com Listview #343394

18/07/2007

0

Colegas estou usando um dbgrid é um listview
No cadastro de entrada de material
Os produtos ficam no grid e ao clicar no mesmo “jogo” no listview
Até ai tudo bem só que tem alguns erros que não consigo tirar:
Não deixar que seja inserida o mesmo produto duas vezes
Não sei como verificar a cada item inserido se o mesmo já existe no
Listview.
Na coluna quantidade o valor não pode ser zero também não sei
Como verificar isso.

Para inserir uso esse código :
procedure TfrmMovEntrada.AdicionarItem;
var
ListItem: TListItem; // Variável para guarda os itens do Listview
item : string;
begin

// Adicionamos um Item ao ListView
ListItem := ListView1.Items.Add;

// Adicionamos dados a Coluna Código do Grupo
ListItem.Caption := qryEstCons.Fieldbyname(´cd_grupo´).AsString;

// Adicionamos dados a Coluna Nome do Grupo
ListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname(´de_grupo´).AsString));

// Adicionamos dados a Coluna Código do Produto
ListItem.SubItems.Add(qryEstCons.Fieldbyname(´cd_produto´).AsString);

// Adicionamos dados a Coluna Nome do Produto
ListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname(´de_produto´).AsString));

// Adicionamos dados a Coluna Quantidade do Produto
item:= (InputBox(´SCA´,´Informe a quantidade´,´0´));
if item = ´0´ then
begin
Application.MessageBox(´Informe uma quantidade correta´, ´Atenção´, MB_OK +
MB_ICONINFORMATION);
item:= (InputBox(´SCA´,´Informe a quantidade´,´0´));
end
else
begin
ListItem.SubItems.Add(item);
// Adicionamos dados a Coluna Quantidade do Produto
ListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname(´vl_custo´).AsString));
end;
end;

Alguém pode me ajudar.


Mssilva

Mssilva

Responder

Posts

19/07/2007

Mssilva

Colegas o erro da quantidade com zero já consegui resolver.
Só falta pesquisar se o item inserido do dbgrid já está no listview
São 5 Subitens que tenho em cada linha do listview eu preciso consultar
Só o 1º e 3º alguém pode me ajudar com essa dúvida?


Responder

Gostei + 0

19/07/2007

Adriano Santos

procedure TForm1.Button1Click(Sender: TObject);
var
  ListItem: TListItem;
  function ExiteItem(ACodigo: string): Boolean;
  var
    I : Integer;
  begin
      for I := 0 to ListView1.Items.Count-1 do
      begin
        if ListView1.Items[I].Caption = ACodigo then
        begin
          Result := True;
          Break;
        end;
      end;
    end;
begin
  if not ExiteItem(Edit1.Text) or (ListView1.Items.Count = 0) then
  begin
    ListItem := ListView1.Items.Add;
    ListItem.Caption := Edit1.Text;
    ListItem.SubItems.Add(´TESTE1´);
  end
  else
    MessageDlg(´Item já existe.´, mtInformation, [mbOk], 0);
end;



Responder

Gostei + 0

19/07/2007

Vitor Alcantara

Você também pode utilizar o método FindCaption.

Ex:

function ItemExiste(Caption:String);
begin
ListView1.ItemIndex := LvPDVPro.FindCaption(0,Caption.Value ,true,true,true).Index;
Result := ListView1.ItemIndex >= 0;
if Result then
ShowMessage(´O item já existe´);
end;


Responder

Gostei + 0

19/07/2007

Vitor Alcantara

Só uma pequena correção. Não testei mais acho que da certo.

function ItemExiste(Caption:String); 
begin 
ListView1.ItemIndex := LvPDVPro.FindCaption(0,Caption.Value ,false,true,true).Index; 
Result := ListView1.ItemIndex >= 0; 
if Result then 
ShowMessage(´O item já existe´); 
end;



Responder

Gostei + 0

19/07/2007

Vitor Alcantara

function ItemExiste(Caption:String):boolean; 
begin 
ListView1.ItemIndex := LvPDVPro.FindCaption(0,Caption ,false,true,true).Index; 
Result := ListView1.ItemIndex >= 0; 
if Result then 
ShowMessage(´O item já existe´); 
end;



Responder

Gostei + 0

19/07/2007

Mssilva

Bem colegas a principio é isso mesmo só que além do caption eu preciso pegar o subitem [3] são 6 de cada linha do listview tem como.


Responder

Gostei + 0

23/07/2007

Mssilva

Obrigado colegas funcionou :lol:


Responder

Gostei + 0

14/06/2017

Hermeson Gonçalves

e como seria para pegar o valor em uma TListview com o MultiItemdetail habilitado???
Responder

Gostei + 0

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

Aceitar