Ir para conteúdo
Fórum Script Brasil
  • 0

[resolvido] Ajuda Com Listview


Marcos Santana

Pergunta

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.

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Guest --Jonas --

Marcos, fiz um teste para voce, o resto é com voce, valeu ?

Obs: tive que mudar a sua tabela para poder testar, voce deve modificar para o seu uso.

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  ComCtrls, ExtCtrls, DBCtrls, Db, DBTables, Grids, DBGrids;

type
  TForm1 = class(TForm)
    ListView1: TListView;
    DBGrid1: TDBGrid;
    DataSource1: TDataSource;
    Query1: TQuery;
    DBNavigator1: TDBNavigator;
    Query1PAPEL: TStringField;
    Query1COD: TStringField;
    Query1NUM: TFloatField;
    procedure DBGrid1CellClick(Column: TColumn);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  ListItem: TListItem; // Variável para guarda os itens do Listview
  item : string;
  i : integer;
implementation

{$R *.DFM}

procedure TForm1.DBGrid1CellClick(Column: TColumn);
begin
// Adicionamos um Item ao ListView
ListItem := ListView1.Items.Add;

showmessage(inttostr(ListView1.Items.Count));
for i := 0 to ListView1.Items.Count-1 do
   begin
      showmessage(ListView1.Items.Item[i].Caption);
      showmessage(Query1PAPEL.Value);
      if trim(ListView1.Items.Item[i].Caption) = trim(Query1PAPEL.Value) then
         begin
         showmessage('Produto já existe');
         ListView1.Items.Delete(ListView1.Items.Count-1); // deleta o novo item caso já exista
         exit;
         end
      else
         begin

         // Adicionamos dados a Coluna Código do Grupo
         ListItem.Caption := Query1PAPEL.Value;
         // Adicionamos dados a Coluna Nome do Grupo
         ListItem.SubItems.Add(Trim(Query1PAPEL.Value));
        // Adicionamos dados a Coluna Código do Produto
        ListItem.SubItems.Add(Query1COD.Value);

        // Adicionamos dados a Coluna Nome do Produto
        ListItem.SubItems.Add(Trim(Query1NUM.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(Query1NUM.AsString));
            end;
        break;
     end;
   end;


end;


end.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --Jonas --
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.

Os subitens funcionam da mesma maneira, vale lembrar que os subitens funcionam como uma matriz, ou seja, para testar os subitens basta montar outro FOR para os mesmos;

for i := 0 to ListView1.Items.Count-1 do

for j := 1 to ListView1.Items.Item.SubItems.Count-1 do

ListView1.Items.Item.SubItems.Names[j];

Para pegar os subitens

for i := 0 to ListView1.Items.Count-1 do
    begin
    for j := 0 to ListView1.Items.Item[i].SubItems.Count-1 do
          begin
              .
              .
              .  // aqui voce coloca o codigo para testar os subitens
                 if ListView1.Items.Item[i].SubItems.Names[j] = ......  // teste com o campo da tebela
              .
          end;
    end;

Captou a mensagem ?

Editado por Micheus
Post's mesclados. Jonas, porque vc não se registra, assim pode editar seus posts. ;)
Link para o comentário
Compartilhar em outros sites

  • 0
Os subitens funcionam da mesma maneira, vale lembrar que os subitens funcionam como uma matriz, ou seja, para testar os subitens basta montar outro FOR para os mesmos;
Jonas, apenas uma correção para que se utilize os termos adequados e evite confusões futuras.

Os SubItens lembram um vetor (array), é unidimensional. Matrizes tem mais que uma dimensão.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...