Fórum Combobox não fixa o valor escolhido em tempo de execução #587255
26/10/2017
0
Pessoal, tudo bem?
Estou com uma rotina que o combobox adciona itens na sua lista em tempo real a partir de um determinado item "X" previamente selecionado no programa.
Entretanto, dependendo do item que for selecionado "x" ele faz o preenchimento deste combobox com diferentes valores.
Até aí, está tudo bem, pois o combobox consegue fazer a leitura e adcionar os itens necessários com base na escolha de "x".
O problema ocorre porque o combobox mostra a lista correta, mas não guarda os valores (não fica fixado o valor quando eu escolho no combobox), de modo que parece que o combobox se "limpa automaticamente" (coisa que não quero que aconteça) - fica parecendo que eu não selecionei nenhum item, mas ao selecionar o item que aparece, ele não grava e deixa em branco o combobox novamente.
Estou utilizando o seguinte código:
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
if ComboBox4.ItemIndex = 0
Then Begin
Combobox3.Text:='';
ComboBox3.Items.Clear;
Combobox3.items.add('4.0 mm');
Combobox3.items.add('5.0 mm');
Combobox3.items.add('6.0 mm');
Combobox3.items.add('7.0 mm');
Combobox3.items.add('8.0 mm');
if ComboBox3.ItemIndex = 0
Then Begin
Asp:=12.6;
End;
if ComboBox3.ItemIndex = 1
Then Begin
Asp:=19.6;
End;
if ComboBox3.ItemIndex = 2
Then Begin
Asp:=28.3;
End;
if ComboBox3.ItemIndex = 3
Then Begin
Asp:=38.5;
End;
if ComboBox3.ItemIndex = 4
Then Begin
Asp:=50.3;
End;
End;
end;
Percebam que eu quero que o combobox3 dependendo do que for selecionado, guarde a variável "asp", do tipo real.
Podem, por gentileza, me ajudar a solucionar o problema?
Desde já, agradeço.
abs.
JD
Estou com uma rotina que o combobox adciona itens na sua lista em tempo real a partir de um determinado item "X" previamente selecionado no programa.
Entretanto, dependendo do item que for selecionado "x" ele faz o preenchimento deste combobox com diferentes valores.
Até aí, está tudo bem, pois o combobox consegue fazer a leitura e adcionar os itens necessários com base na escolha de "x".
O problema ocorre porque o combobox mostra a lista correta, mas não guarda os valores (não fica fixado o valor quando eu escolho no combobox), de modo que parece que o combobox se "limpa automaticamente" (coisa que não quero que aconteça) - fica parecendo que eu não selecionei nenhum item, mas ao selecionar o item que aparece, ele não grava e deixa em branco o combobox novamente.
Estou utilizando o seguinte código:
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
if ComboBox4.ItemIndex = 0
Then Begin
Combobox3.Text:='';
ComboBox3.Items.Clear;
Combobox3.items.add('4.0 mm');
Combobox3.items.add('5.0 mm');
Combobox3.items.add('6.0 mm');
Combobox3.items.add('7.0 mm');
Combobox3.items.add('8.0 mm');
if ComboBox3.ItemIndex = 0
Then Begin
Asp:=12.6;
End;
if ComboBox3.ItemIndex = 1
Then Begin
Asp:=19.6;
End;
if ComboBox3.ItemIndex = 2
Then Begin
Asp:=28.3;
End;
if ComboBox3.ItemIndex = 3
Then Begin
Asp:=38.5;
End;
if ComboBox3.ItemIndex = 4
Then Begin
Asp:=50.3;
End;
End;
end;
Percebam que eu quero que o combobox3 dependendo do que for selecionado, guarde a variável "asp", do tipo real.
Podem, por gentileza, me ajudar a solucionar o problema?
Desde já, agradeço.
abs.
JD
Joao Df
Curtir tópico
+ 0
Responder
Post mais votado
27/10/2017
os moderadores somente respondem programação avançada?? fiz um topico de C......e vi que outros topicos sobre C tambem ninguem responde!! absurdo isso!
Flavio Ferreira
Responder
Gostei + 1
Mais Posts
27/10/2017
Gabriel Baltazar
Bom dia, primeiro só gostaria de sugerir nesse caso usar um case ao invés de um monte de if, fica mais limpo na minha opinião.
Ficaria algo como:
Agora pelo que observei você faz esses testes no Change de outro comboBox, no mesmo que você usa pra prencher. Pelo que entendi do seu código esse Case você deveria fazer no Change do ComboBox3, no Change do ComboBox4 ficaria só até a parte que você adiciona os itens
Ficaria algo como:
case ComboBox3.ItemIndex of 0 : Asp:=12.6; 1 : Asp:=19.6; .... end;
Agora pelo que observei você faz esses testes no Change de outro comboBox, no mesmo que você usa pra prencher. Pelo que entendi do seu código esse Case você deveria fazer no Change do ComboBox3, no Change do ComboBox4 ficaria só até a parte que você adiciona os itens
Responder
Gostei + 0
27/10/2017
Joao Df
Perfeito.. Desta maneira meu código completo ficou da seguinte maneira:
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
Combobox3.Items.Clear;
if ComboBox4.ItemIndex = 0
Then Begin
Combobox3.Text:='';
Combobox3.items.add('4.0 mm');
Combobox3.items.add('5.0 mm');
Combobox3.items.add('6.0 mm');
Combobox3.items.add('7.0 mm');
Combobox3.items.add('8.0 mm');
case ComboBox3.ItemIndex of
0 : Asp:=12.6;
1 : Asp:=19.6;
2 : Asp:=28.3;
3 : Asp:=38.5;
4 : Asp:=50.3;
end;
End;
if ComboBox4.ItemIndex = 1
Then Begin
if combobox2.ItemIndex = 0
then begin
Combobox3.items.add('6.4 mm');
Combobox3.items.add('7.9 mm');
Combobox3.items.add('9.5 mm');
Combobox3.items.add('11.0 mm');
Combobox3.items.add('12.7 mm');
Combobox3.items.add('15.2 mm');
case ComboBox3.ItemIndex of
0 : Asp:=24.5;
1 : Asp:=37.4;
2 : Asp:=52.3;
3 : Asp:=71.0;
4 : Asp:=94.2;
5 : Asp:=138.7;
end;
end
Else begin
Combobox3.items.add('9.5 mm');
Combobox3.items.add('11.0 mm');
Combobox3.items.add('12.7 mm');
Combobox3.items.add('15.2 mm');
case ComboBox3.ItemIndex of
0 : Asp:=54.8;
1 : Asp:=74.2;
2 : Asp:=98.7;
3 : Asp:=140.4;
end;
end;
End;
Memo1.Lines.add('A Area escolhida é de: '+ (FormatFloat('0.00',Asp)+' mm'));
end;
Entretanto, note que o problema ainda permanece... o Combobox3 não deixa ficar selecionado o item que eu quero...
E se eu retirar o item "clear" lá no começo... ele até deixa... mas ai ele fica rotinamente acrescentando as linhas do combobox3.
Consegue me ajudar com o caso?
Abração
procedure TForm1.ComboBox4Change(Sender: TObject);
begin
Combobox3.Items.Clear;
if ComboBox4.ItemIndex = 0
Then Begin
Combobox3.Text:='';
Combobox3.items.add('4.0 mm');
Combobox3.items.add('5.0 mm');
Combobox3.items.add('6.0 mm');
Combobox3.items.add('7.0 mm');
Combobox3.items.add('8.0 mm');
case ComboBox3.ItemIndex of
0 : Asp:=12.6;
1 : Asp:=19.6;
2 : Asp:=28.3;
3 : Asp:=38.5;
4 : Asp:=50.3;
end;
End;
if ComboBox4.ItemIndex = 1
Then Begin
if combobox2.ItemIndex = 0
then begin
Combobox3.items.add('6.4 mm');
Combobox3.items.add('7.9 mm');
Combobox3.items.add('9.5 mm');
Combobox3.items.add('11.0 mm');
Combobox3.items.add('12.7 mm');
Combobox3.items.add('15.2 mm');
case ComboBox3.ItemIndex of
0 : Asp:=24.5;
1 : Asp:=37.4;
2 : Asp:=52.3;
3 : Asp:=71.0;
4 : Asp:=94.2;
5 : Asp:=138.7;
end;
end
Else begin
Combobox3.items.add('9.5 mm');
Combobox3.items.add('11.0 mm');
Combobox3.items.add('12.7 mm');
Combobox3.items.add('15.2 mm');
case ComboBox3.ItemIndex of
0 : Asp:=54.8;
1 : Asp:=74.2;
2 : Asp:=98.7;
3 : Asp:=140.4;
end;
end;
End;
Memo1.Lines.add('A Area escolhida é de: '+ (FormatFloat('0.00',Asp)+' mm'));
end;
Entretanto, note que o problema ainda permanece... o Combobox3 não deixa ficar selecionado o item que eu quero...
E se eu retirar o item "clear" lá no começo... ele até deixa... mas ai ele fica rotinamente acrescentando as linhas do combobox3.
Consegue me ajudar com o caso?
Abração
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)