Marcos Santana Postado Julho 19, 2007 Denunciar Share Postado Julho 19, 2007 Colegas estou usando um dbgrid é um listview No cadastro de entrada de materialOs produtos ficam no grid e ao clicar no mesmo “jogo” no listviewAté 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 noListview.Na coluna quantidade o valor não pode ser zero também não seiComo verificar isso.Para inserir uso esse código :procedure TfrmMovEntrada.AdicionarItem;varListItem: TListItem; // Variável para guarda os itens do Listviewitem : string;begin// Adicionamos um Item ao ListViewListItem := ListView1.Items.Add;// Adicionamos dados a Coluna Código do GrupoListItem.Caption := qryEstCons.Fieldbyname('cd_grupo').AsString;// Adicionamos dados a Coluna Nome do GrupoListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname('de_grupo').AsString));// Adicionamos dados a Coluna Código do ProdutoListItem.SubItems.Add(qryEstCons.Fieldbyname('cd_produto').AsString);// Adicionamos dados a Coluna Nome do ProdutoListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname('de_produto').AsString));// Adicionamos dados a Coluna Quantidade do Produtoitem:= (InputBox('SCA','Informe a quantidade','0'));if item = '0' thenbeginApplication.MessageBox('Informe uma quantidade correta', 'Atenção', MB_OK +MB_ICONINFORMATION);item:= (InputBox('SCA','Informe a quantidade','0'));endelsebeginListItem.SubItems.Add(item);// Adicionamos dados a Coluna Quantidade do ProdutoListItem.SubItems.Add(Trim(qryEstCons.Fieldbyname('vl_custo').AsString));end;end; Alguém pode me ajudar. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Julho 19, 2007 Denunciar Share Postado Julho 19, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos Santana Postado Julho 19, 2007 Autor Denunciar Share Postado Julho 19, 2007 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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Guest --Jonas -- Postado Julho 19, 2007 Denunciar Share Postado Julho 19, 2007 (editado) 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 dofor j := 1 to ListView1.Items.Item.SubItems.Count-1 doListView1.Items.Item.SubItems.Names[j];Para pegar os subitensfor 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 Julho 20, 2007 por Micheus Post's mesclados. Jonas, porque vc não se registra, assim pode editar seus posts. ;) Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Micheus Postado Julho 20, 2007 Denunciar Share Postado Julho 20, 2007 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 Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Marcos Santana Postado Julho 23, 2007 Autor Denunciar Share Postado Julho 23, 2007 Obrigado colegas funcionou :D . Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
Marcos Santana
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
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.