Fórum Opinião sobre DBLookupComboBox #348741
08/11/2007
0
Saudações delphianas!!!!
O objetivo do projeto que estou desenvolvendo, que ficou parado por alguns dias e estou retornando agora, é gerenciar uma lista de produtos químicos que são vendidos ou comprados, de acordo com a situação. A tela principal do sistema é a de Lançamento de produtos, onde informo o nome da Empresa, o tipo (consumidor, revendedor, fabricante), o produto, a quantidade e o preço unitário. Somente o campo produto deve ser preenchido, os demais não, dependendo é claro da situação.
Situação: o usuário recebe uma lista com alguns produtos de uma empresa que é revendedora. Para escolher a empresa, na tela há um dblookupcombobx, então ele a procura e ao encontrá-la, seleciona e passa para o campo seguinte. Aí vem a dúvida que faço para vcs que já têm uma experiência maior, pois estou começando, se o usuário não encontra a empresa, então ele precisa cadastrá-la, qual seria a forma correta de se fazer isso de uma maneira que fique fácil para o usuário?? Eu tentei fazer de um jeito, mas logo percebi que não era o correto, por exemplo, criar o botão, chamar uma tela de cadastro, cadastrar, e ao retornar já aparecer no dbcombobox a empresa que eu cadastrei já selecionada, mas não consegui fazer isso. Gostaria muito da opinião de vcs para que eu faça o correto.
Espero que tenha sido claro na minha dúvida e aguardo ansiosamente pelas opiniões.
Agradeço desde já.
[]´s
Rogério
O objetivo do projeto que estou desenvolvendo, que ficou parado por alguns dias e estou retornando agora, é gerenciar uma lista de produtos químicos que são vendidos ou comprados, de acordo com a situação. A tela principal do sistema é a de Lançamento de produtos, onde informo o nome da Empresa, o tipo (consumidor, revendedor, fabricante), o produto, a quantidade e o preço unitário. Somente o campo produto deve ser preenchido, os demais não, dependendo é claro da situação.
Situação: o usuário recebe uma lista com alguns produtos de uma empresa que é revendedora. Para escolher a empresa, na tela há um dblookupcombobx, então ele a procura e ao encontrá-la, seleciona e passa para o campo seguinte. Aí vem a dúvida que faço para vcs que já têm uma experiência maior, pois estou começando, se o usuário não encontra a empresa, então ele precisa cadastrá-la, qual seria a forma correta de se fazer isso de uma maneira que fique fácil para o usuário?? Eu tentei fazer de um jeito, mas logo percebi que não era o correto, por exemplo, criar o botão, chamar uma tela de cadastro, cadastrar, e ao retornar já aparecer no dbcombobox a empresa que eu cadastrei já selecionada, mas não consegui fazer isso. Gostaria muito da opinião de vcs para que eu faça o correto.
Espero que tenha sido claro na minha dúvida e aguardo ansiosamente pelas opiniões.
Agradeço desde já.
[]´s
Rogério
Roger1976
Curtir tópico
+ 0
Responder
Posts
09/11/2007
Corcos
eu tb ja tentei fazer isso e não consegui
o maximo que eu consegui foi colocar do lado do dbloookup um botão para inserir, ele da um showmodal no cadastro, logo apos eu dou um refresh na tabela ai quando ele vai selecionar o dblookup ele tem que buscar, mas ja aparecer selecionado não consegui, pensei em apontar para o ultimo registro inserido no sistema... mas nem dei continuidade mas acho que o caminho é esse
o maximo que eu consegui foi colocar do lado do dbloookup um botão para inserir, ele da um showmodal no cadastro, logo apos eu dou um refresh na tabela ai quando ele vai selecionar o dblookup ele tem que buscar, mas ja aparecer selecionado não consegui, pensei em apontar para o ultimo registro inserido no sistema... mas nem dei continuidade mas acho que o caminho é esse
Responder
Gostei + 0
09/11/2007
Roger1976
Corcos, acho que estamos com o mesmo problema, né, então, de tanto tentar, encontrei uma solução, não sei se é a melhor, gostaria que vc e àqueles que estiverem lendo este tópico analisasse e, se possível, dê sugestões.
Ao lado do meu dblookupcombobox que mostra os produtos cadastros, tem um botão que será acionado somente para acrescentar um novo produto. Então, este chama a tela de cadastro, onde efetuo a operação e, ao retornar à tela de lançamentos, aparecerá já selecionado o item cadastrado.
A solução que encontrei (a ser discutida) foi a seguinte:
1) Criação de uma variável no datamodule (poderia ser no form principal) chamada ID, do tipo INTEGER. Quando o produto for cadastrado, ao final do código do botão GRAVAR da tela de CADASTRO DE PRODUTOS, esta receberá o código gerado.
procedure TfrmCadastroProdutos.btnGravarClick(Sender: TObject);
begin
...
[b:e714a398a2]dmCadastros.id := strtoint(pnlCodigo.Caption);[/b:e714a398a2]
inherited;
end;
2) No botão +, que fica ao lado do dblookupcombobox DBPRODUTO (tela de LANCAMENTOS), coloquei o seguinte código:
procedure TfrmLancamento.btnNovoProdutoClick(Sender: TObject);
begin
try
frmCadastroProdutos := TfrmCadastroProdutos.Create(nil);
frmCadastroProdutos.ShowModal;
finally
dmCadastros.CarregaProdutos; // como uso clientdataset, então eu fecho, faço o select e abro, se fosse query, será a mesma coisa
dbProduto.KeyValue := dmCadastros.id;
freeandnil(frmCadastroProdutos);
end;
end;
Neste passo, o form de cadastro é criado e exibido na tela, onde o usuário fará o cadastro. Antes de finalizar o form, executo o metódo CarregaProdutos, e seleciono automaticamente o item cadastrado. Após isso, destruo o form de cadastro de produto (método freeandnil - destróe e limpa da memória).
Kra, foi assim que eu fiz, repito, não sei se é a melhor solução, mas faça um teste, comigo deu certo, falow...
Abraço,
Ao lado do meu dblookupcombobox que mostra os produtos cadastros, tem um botão que será acionado somente para acrescentar um novo produto. Então, este chama a tela de cadastro, onde efetuo a operação e, ao retornar à tela de lançamentos, aparecerá já selecionado o item cadastrado.
A solução que encontrei (a ser discutida) foi a seguinte:
1) Criação de uma variável no datamodule (poderia ser no form principal) chamada ID, do tipo INTEGER. Quando o produto for cadastrado, ao final do código do botão GRAVAR da tela de CADASTRO DE PRODUTOS, esta receberá o código gerado.
procedure TfrmCadastroProdutos.btnGravarClick(Sender: TObject);
begin
...
[b:e714a398a2]dmCadastros.id := strtoint(pnlCodigo.Caption);[/b:e714a398a2]
inherited;
end;
2) No botão +, que fica ao lado do dblookupcombobox DBPRODUTO (tela de LANCAMENTOS), coloquei o seguinte código:
procedure TfrmLancamento.btnNovoProdutoClick(Sender: TObject);
begin
try
frmCadastroProdutos := TfrmCadastroProdutos.Create(nil);
frmCadastroProdutos.ShowModal;
finally
dmCadastros.CarregaProdutos; // como uso clientdataset, então eu fecho, faço o select e abro, se fosse query, será a mesma coisa
dbProduto.KeyValue := dmCadastros.id;
freeandnil(frmCadastroProdutos);
end;
end;
Neste passo, o form de cadastro é criado e exibido na tela, onde o usuário fará o cadastro. Antes de finalizar o form, executo o metódo CarregaProdutos, e seleciono automaticamente o item cadastrado. Após isso, destruo o form de cadastro de produto (método freeandnil - destróe e limpa da memória).
Kra, foi assim que eu fiz, repito, não sei se é a melhor solução, mas faça um teste, comigo deu certo, falow...
Abraço,
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)