Jump to content
Fórum Script Brasil
  • 0

[resolvido] Ajuda Com Listview


Marcos Santana
 Share

Question

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 to comment
Share on other sites

5 answers to this question

Recommended Posts

  • 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 to comment
Share on other 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 ?

Edited by Micheus
Post's mesclados. Jonas, porque vc não se registra, assim pode editar seus posts. ;)
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.1k
    • Total Posts
      647.1k
×
×
  • Create New...