Opinião sobre DBLookupComboBox
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
Curtidas 0
Respostas
Corcos
08/11/2007
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
GOSTEI 0
Roger1976
08/11/2007
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,
GOSTEI 0