Ir para conteúdo

Arquivado

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

antunesleo_

Condição utilizando o combobox

Recommended Posts

Galera, to com o seguinte problema aqui. Estou desenvolvendo uma calculadora da lei de Ohm. O cálculo da tensão é Tensão = Resistencia * Corrente. Tudo bem simples. Porem a resistência possui escalas, e a corrente também. Estou utilizando um combobox para a resistencia, e o outro para a corrente, porque quando selecionarmos items diferentes deste combobox, a conta que vai ser guardada na tensão vai ter que sofrer conversoes, a calculo vai ser diferente. Exemplo:

 

Se (item 0 do combobox1) E (item 0 do combobox 2) estiverem selecionados ENTÃO tensão = resistência * corrente

------------------------------------------------------------------------------------------------------------------------------------------------------

calculo tensão

 

Resistencia: (x) Escala ohm

( ) Escala Kilo ohm

Então Tensão = Resistência * corrente;

Corrente: ( x ) Ampere

( ) Mili Ampere

 

---------------------------------------------------------------------------------------------------------------------------------------------------------------------

 

Se (item 1 combobox1) E (tem 1 do combobox 2) estiverem selecionado ENTÃO tensão = (Resistencia * 1000) * (Corrente/1000);

 

calculo tensão

 

Resistencia: ( ) Escala ohm

(x) Escala Kilo ohm

Então Tensão = (Resistência*1000)(corrente/1000);

Corrente: ( ) Ampere

(x ) Mili Ampere

Assim por diante, até ter o mesmo calculo (Tensão) como todas as escalas de corrente e resistência. Consegui desenvolver um algorítimo utilizando radiobutton, porem gostaria de fazer com o combobox e não sei como utilizar a sintaxe no delphi!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Você pode utilizar a propriedade itemindex do combobox para saber se ele possui um valor selecionado ou não, e o evento onchange para disparar os métodos. Por default, quando não está selecionado, o valor do itemindex do combobox é -1. Então o código ficaria algo do tipo abaixo....

 

 

procedure TForm1.ComboBox1Change(Sender: TObject);
var tensao,
    resistencia,
    corrente : Double;
begin
   //Estou aqui abrindo o case para que ele controle, a partir do item selecionado no combobox 1,
   //qual cálculo fazer... note que não estou atribuindo valores as variáveis, apenas demonstrando
   //onde usaria as suas fórmulas
   case ComboBox1.ItemIndex of
      //Se entrar aqui, significa que foi selecionado o primeiro item do combobox1
      0: begin
            //Testa aqui se está selecionado o primeiro item do combobox2 para efetuar o cálculo
            if ComboBox2.ItemIndex = 0 then
               tensao := resistencia * corrente;
         end;
      //Se entrar aqui significa que foi selecionado o segundo item do combobox 1
      1: begin
            //Testa aqui se está selecionado o primeiro item do combobox 2
            if ComboBox2.ItemIndex = 1 then
               tensao := (resistencia * 1000) * (corrente * 1000);
         end;
      //Caso queira fazer algum tratamento caso seja incluído algum item no combobox que não foi
      //codificado por exemplo, poderia por aqui
      else
         showmessage('Item sem tratamento programado: ' + ComboBox1.Text);
   end; //Case
end;

 

Ps.: Poderia ter usado apenas ifs simples aqui também que funcionaria, mas o case é melhor pra organizar... e só teria que programar o evento em uma procedure ou no change de um dos combobox e associar aos dois o mesmo evento que funcionaria. Qualquer coisa fala ai.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Bom dia. Você pode utilizar a propriedade itemindex do combobox para saber se ele possui um valor selecionado ou não, e o evento onchange para disparar os métodos. Por default, quando não está selecionado, o valor do itemindex do combobox é -1. Então o código ficaria algo do tipo abaixo....

procedure TForm1.ComboBox1Change(Sender: TObject);
var tensao,
    resistencia,
    corrente : Double;
begin
   //Estou aqui abrindo o case para que ele controle, a partir do item selecionado no combobox 1,
   //qual cálculo fazer... note que não estou atribuindo valores as variáveis, apenas demonstrando
   //onde usaria as suas fórmulas
   case ComboBox1.ItemIndex of
      //Se entrar aqui, significa que foi selecionado o primeiro item do combobox1
      0: begin
            //Testa aqui se está selecionado o primeiro item do combobox2 para efetuar o cálculo
            if ComboBox2.ItemIndex = 0 then
               tensao := resistencia * corrente;
         end;
      //Se entrar aqui significa que foi selecionado o segundo item do combobox 1
      1: begin
            //Testa aqui se está selecionado o primeiro item do combobox 2
            if ComboBox2.ItemIndex = 1 then
               tensao := (resistencia * 1000) * (corrente * 1000);
         end;
      //Caso queira fazer algum tratamento caso seja incluído algum item no combobox que não foi
      //codificado por exemplo, poderia por aqui
      else
         showmessage('Item sem tratamento programado: ' + ComboBox1.Text);
   end; //Case
end;

Ps.: Poderia ter usado apenas ifs simples aqui também que funcionaria, mas o case é melhor pra organizar... e só teria que programar o evento em uma procedure ou no change de um dos combobox e associar aos dois o mesmo evento que funcionaria. Qualquer coisa fala ai.

Problema resolvido, Muito obrigado pela ajuda! Utilizei IF mesmo por ter mais facilidades, depois vou utilizar o case para treinar.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu prefiro o case por ele ter mais performance e permitir criar blocos de comando condicionais que só são executados quando atendem a regra que criei rs... mas você tem que usar o que é melhor pra você. Sucesso!

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.