Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

tiriciasf

Salvar no ComboBox

Recommended Posts

Boa noite Pessoal!!!!

 

 

Preciso de uma ajuda, gostaria de saber como fazer para incluir dados no comboBox em tempo de execusao, como por exemplo num cadastro de Pneu, onde digitamos a marca, dimensao, construção, onde o usuario digita a contruçao do Pneu Ex:Diagonal Liso e ele ja fica salvo no comboBox, assim qndo tiver outro pneu com o mesmo dado nao precisa digitar novamente aparece como se estivese incluido no Itens do componente, caso contrario o usuario digita um novo e ele ja fica salvo no ComboBox.

 

Fico no aguardo.

 

Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá

 

Bom, não sei se isso seria a forma mais correta, mas baseado nos componentes da dbExpress eu faria o seguinte processo:

 

Ao abrir o form de cadastro, ou quando clica no botao, usaria um componente ClientDataSet ou SQLDataSet para pesquisar os nomes já cadastrados, percorrendo todos os registros e jogando-os ao combo. Usaria o código através da declaraçao desta procedure, veja:

procedure TForm1.PreencheCombo;
begin
  try
	ClientDataSet1.First;
	while not ClientDataSet1.Eof do
	begin
	  ComboBox1.Items.Add(ClientDataSet1.FieldByName('FirstName').AsString);
	  ClientDataSet1.Next;
	end;
	ComboBox1.ItemIndex := 0;
  except

  end;
end;

Depois, chamaria este procedimento no OnShow do Form... clique do botão ou qualquer outro evento disparado antes do cadastro, assim:

procedure TForm1.FormCreate(Sender: TObject);
begin
  PreencheCombo();
end;

Por último, verificaria no OnExit do ComboBox se o nome que está carregado foi digitado ou selecionado. Caso tenha sido digitado, faria um insert armazenando-o para a próxima vez que o cadastro fosse realizado, assim:

procedure TForm1.ComboBox1Exit(Sender: TObject);
begin
  if not ClientDataSet1.Locate('FirstName',ComboBox1.Items.Strings[ComboBox1.ItemIndex],[loCaseInsensitive]) then
  begin
	ClientDataSet1.Insert;
	ClientDataSet1.FieldByName('FirstName').Value := ComboBox1.Items.Strings[ComboBox1.ItemIndex];
	ClientDataSet1.Post;
  end;
end;

Veja se isso consegue esclarecer um pouco sua dúvida.... qualquer coisa, post ai.

 

Att

Compartilhar este post


Link para o post
Compartilhar em outros sites

Maikel estou testando o código que você me passou, mas esta dando o seguinte erro,

Project Principal.exe raised Exception class EdatabaseError with message 'TBCOMBOMARCA:Fild 'FirtName' no found.Process stopped.Use step or rum to continue.

 

segue abaixo o codigo que estou usando.

 

procedure TFormCadPneus.preenche_comboMarca;
begin
try
	DMCONSULTAPNEUS.TBCOMBOMARCA.Open;
	DMCONSULTAPNEUS.TBCOMBOMARCA.First;
	while not DMCONSULTAPNEUS.TBCOMBOMARCA.Eof do
	begin
	  DBComboBoxMarca.Items.Add(DMCONSULTAPNEUS.TBCOMBOMARCA.FieldByName('FirstName').AsString);
	  DMCONSULTAPNEUS.TBCOMBOMARCA.Next;
	end;
	DBComboBoxMarca.ItemIndex := 0;
  except

  end;

end;

 

Fico no aguardo de uma resposta.

Grata.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Troque o "Firstname" pelo nome do campo da sua tabela que quer carregar no combo.

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.