Resultados 1 a 2 de 2

Tópico: Calcula Equação

      
  1. #1
    G-Sat VIP Avatar de helldanger1
    Data de Inscrição
    Oct 2006
    Localização
    Alentejo
    Idade
    38
    Mensagens
    3.465
    Entradas no Blog
    1
    Agradecer
    360
    Agradecido 492 vezes
    Em 259 tópicos

    Padrão Calcula Equação

    Agora nos vamos desenvolver um aplicativo que nos permitirá conhecer melhor algumas propriedades e eventos do componente Label, bem como conhecer o Edit e caixas de mensagem e de entrada de dados.



    Nosso programa será usado para fornecer os resultados do cálculo de equações de segundo grau.



    Inicie uma nova aplicação e salve todo o projeto em um diretório de sua preferência.



    Coloque quatro Label(s) e três Edit(s) no Form.



    Altere as propriedades de acordo com a tabela:





    Form1:

    Hint = Para iniciar os cálculos, clique sobre onde está escrito: "Digite um valor para ..."

    BorderStyle = bsToolWindow

    Caption = Calcula Equação de 2º Grau

    Color = clBtnFace

    OldCreateOrder = False

    ShowHint = True



    Comentário: a propriedade Hint serve para transmitir alguma informação ao usuário quando o cursor do mouse fica estacionado sobre o componente por alguns segundos. A propriedade ShowHint determina quando o conteúdo da propriedade Hint será mostrado.





    Label1:

    Hint = Dê um clique aqui para digitar um valor para 'a'

    Alignment = taCenter

    Caption = Digite um valor para 'a'

    Font.Color = clWindowText

    ShowHint = True





    Label2:

    Hint = Dê um clique aqui para digitar um valor para 'b'

    Alignment = taCenter

    Caption = Digite um valor para 'b'

    ShowHint = True





    Label3:

    Hint = Dê um clique aqui para digitar um valor para 'c'

    Caption = Digite um Valor para 'c'

    ShowHint = True





    Label4:

    Alignment = taCenter

    AutoSize = False

    Hint = Após inserir os valores 'a', 'b' e 'c', dê um clique aqui para conhecer o resultado...

    Caption = Resultado:

    Font.Size = 10

    ShowHint = True



    Comentário: as propriedades Alignment e AutoSize trabalharão em conjunto para permitir o efeito de profundidade em direção ao centro do componente Label.





    Edit1:

    Hint = este é o valor de delta

    TabStop = False

    Color = clBtnFace

    ReadOnly = True

    ShowHint = False

    Text = valor de delta



    Comentário: a propriedade TabStop marcada para false elimina o foco e, conseqüentemente, o cursor na inicialização do programa do componente Edit. Neste caso, fica também prejudicada a propriedade TabOrder que é a seqüência de deslocamento do cursor entre os Edit(s). Já a propriedade ReadOnly (somente leitura) permitirá que copiemos o conteúdo do Edit, todavia não permitirá que o alteremos.



    Edit2:

    Hint = este é o valor de x1

    TabStop = False

    Color = clBtnFace

    ReadOnly = True

    ShowHint = False

    Text = valor de x1





    Edit3:

    Hint = este é o valor de x2

    TabStop = False

    Color = clBtnFace

    ReadOnly = True

    ShowHint = False

    TabOrder = 1

    Text = valor de x2



    Feito isso, seu projeto deve ficar parecido com a seguinte figura:


    Todos os artigos por mim postados, estão hosp na própria Internet,Qualquer arquivo protegido deve permanecer,no máximo, 24 horas em seu computador. - Eles podem ser baixados apenas para teste, devendo o usuário apaga-lo ou comprá-lo apos 24 horas. - A Aquisição desses arquivos pela internet é de única e exclusiva responsabilidade do usuário.

  2. # ADS
    Link Patrocinador
    Data de Inscrição
    03-10-2006
    Localização
    G-Sat
    Idade
    6
    Mensagens
    Muitas
     

  3. #2
    G-Sat VIP Avatar de helldanger1
    Data de Inscrição
    Oct 2006
    Localização
    Alentejo
    Idade
    38
    Mensagens
    3.465
    Entradas no Blog
    1
    Agradecer
    360
    Agradecido 492 vezes
    Em 259 tópicos

    Padrão Re: Calcula Equação

    Como você já deve ter notado, nosso projeto não possui botões. Isso porque queremos demonstrar os eventos OnClick, OnMouseDown e OnMouseUp do componente Label fazendo às vezes de um componente Button, bem como algumas propriedades sendo alteradas em tempo de execução.



    Usaremos o Evento OnClick para conseguir o mesmo resultado que conseguiríamos com um componente Button; e os eventos OnMouseDown e OnMouseUp serão usados para dar um efeito especial de profundidade no componente, como se o Label estivesse afundando em direção ao seu centro a cada clique do mouse.



    Feito isso, vamos aos códigos.



    Na região dos arquivos de cabeçalho, declare:



    #include <math.h>



    AnsiString a, b, c;



    Nota: match.h é um arquivo com funções matemáticas da linguagem C e AnsiString é uma classe do C++Builder para trabalhar com strings, ou seja, com textos (é como se estivéssemos declarando variáveis de textos).





    Eis o código completo da unidade Unit1.cpp, explicado nos comentários:




    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop

    #include "Unit1.h"

    #include <math.h>

    //---------------------------------------------------------------------------
    #pragma package(smart_init)
    #pragma resource "*.dfm"
    TForm1 *Form1;

    /*declara variáveis globais que serão acessíveis por todas as funções*/
    AnsiString a, b, c;

    //---------------------------------------------------------------------------
    __fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
    {

    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Label1Click(TObject *Sender)
    {
    try /* try { }, com catch(...) { } são usados no tratamento de erros*/
    { // início do bloco try
    retornoA: // Label para o comando goto
    // chama a caixa de entrada InputBox que receberá a AnsiString 'a'
    a = InputBox("Caixa de Entrada de Valores",
    "Digite um valor para 'a'", "");
    StrToInt(a); // converte AnsiString 'a' em inteiro
    /* como na solução de uma equação de 2º grau há uma divisão onde 'a' faz parte
    do divisor, então 'a' não pode ser igual a zero. O bloco abaixo testa essa
    igualdade e, em caso positivo, retorna uma mensagem de erro e remete o programa
    para o Label de goto: retornoA, reiniciando a entrada de valores */
    if (a == 0) // Se 'a' é igual a zero
    { // então devolva uma MessageBox comunicando o erro
    MessageBox(0,"Zero não é um valor válido para 'a' !\nDigite outro valor... ",
    "Erro no valor escolhido", 16);
    goto retornoA; // e remeta o pragrama para retornoA
    }

    else // ou então, caso 'a' seja diferente de zero
    Label1 -> Caption = " a = " + a; // altera Caption de Label1
    Label1 -> Font -> Color = clRed; // altera a cor da Font de Label1
    Label1 -> Font -> Style = TFontStyles()<< fsBold; /*Font de Label1 em negrito*/
    Form1 -> ShowHint = false; // deixa de exibir a informação Hint de Form1
    } // fim do bloco try
    catch(...) // o bloco a seguir trata qualquer erro que ocorra no bloco anterior
    { // exibe mensagem de erro
    MessageBox(0, "Erro ... Valor não suportado pelo programa ...",
    "Erro de digitação", 16);
    } // fim de catch(...)
    } // fim de void __fastcall TForm1::Label1Click(TObject *Sender)

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Label2Click(TObject *Sender)
    {
    try
    {
    b = InputBox("Caixa de Entrada de Valores",
    "Digite um Valor para 'b'", "");
    StrToInt(b);
    Label2 -> Caption = " b = " + b;
    Label2 -> Font -> Color = clRed;
    Label2 -> Font -> Style = TFontStyles()<< fsBold;
    Form1 -> ShowHint = false;
    }
    catch(...)
    {
    MessageBox(0, "Erro ... Valor não suportado pelo programa ...",
    " Erro de digitação", 16);
    }
    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Label3Click(TObject *Sender)
    {
    try
    {
    c = InputBox("Caixa de Entrada de Valores",
    "Digite um Valor para 'c'", "");
    StrToInt(c);
    Label3 -> Caption = " c = " + c;
    Label3 -> Font -> Color = clRed;
    Label3 -> Font -> Style = TFontStyles()<< fsBold;
    Form1 -> ShowHint - false;
    }
    catch(...)
    {
    MessageBox(0, "Erro ... Valor não suportado pelo programa ...",
    "Erro de digitação", 16);
    }
    }

    //---------------------------------------------------------------------------

    void __fastcall TForm1::Label4Click(TObject *Sender)
    {
    try
    {
    Label4 -> Font -> Color = clBlue;
    Label4 -> Font -> Style = TFontStyles()<< fsBold;
    float x1, x2, delta; // declara três variáveis locais
    delta = (b*b) - ((a * 4) * c); // inicializa delta, instruindo seu cálculo
    /* como a solução de uma equação de segundo grau envolve a extração da raiz
    quadrada de delta, e como não existe raiz quadrada de números negativos, o
    bloco if ... else abaixo avalia a possibilidade de delta ser negativo para
    informar o erro ao usuário*/
    if(delta < 0) // se delta é menor que zero
    // exiba uma MessageBox informando o erro
    MessageBox(0,"delta negativo... não existem raízes reais...\n\n" +
    "tente novamente com outros valores...", "Erro nos valores", 16);

    else // ou então
    {
    /* altera a propriedade Text de Edit1, fazendo que Edit1 exiba o valor de delta.
    A função FloatToStr() é usada para converter delta em string, uma vez que
    colocamos a cadeia de caracteres "delta = " na propriedade Text de Edit1*/
    Edit1 -> Text = "delta = " + FloatToStr(delta);
    Edit1 -> Font -> Color = clBlue; // altera a cor da font de Edit1
    Edit1 -> Font -> Style = TFontStyles()<< fsBold; // font em negrito
    Edit1 ->ShowHint = true; // ativa a propriedade Hint de Edit1
    /* fórmula para achar x1. sqrt() é uma função do arquivo match.h
    usada para o cálculo de raízes quadradas*/
    x1 = ((b * (-1)) + (sqrt (delta))) / (a * 2);
    Edit2 -> Text = "x1 = " + FloatToStr(x1); // altera Text de Edit2
    Edit2 -> Font -> Color = clBlue; //altera cor da Font
    Edit2 -> Font -> Style = TFontStyles()<< fsBold; //font em negrito
    Edit2 -> ShowHint = true; // ativa Hint de Edit2
    x2 = ((b * (-1)) - (sqrt (delta))) / (a * 2); //fórmula para x2
    Edit3 -> Text = "x2 = " FloatToStr(x2); //altera Text de Edit3
    Edit3 -> Font -> Color = clBlue; // altera cor da Font
    Edit3 -> Font -> Style = TFontStyles()<< fsBold; // negrito
    Edit3 -> ShowHint = true; //ativa Hint de Edit3
    }
    }
    catch(...)
    {
    MessageBox(0, "Por favor, digite os valores corretamente", "Erro de execução...", 16);
    }
    }
    //---------------------------------------------------------------------------

    void __fastcall TForm1::Label4MouseDown(TObject *Sender,
    TMouseButton Button, TShiftState Shift, int X, int Y)
    {
    /* O evento MouseDown de qualquer componente é o que ocorre quando se dá a
    descida do botão do mouse sobre o componente durante o clique. Ou seja, aquele
    que ocorre quando estamos pressionando o botão do mouse, antes de soltá-lo,
    sem, contudo, movimentar o mouse sobre a janela ou componente.*/

    /* reduzirá o tamanho do Font de Label4 durante o MouseDown, dando um efeito
    de profundidade no clicar*/
    Label4 -> Font -> Size = 6;
    }
    //---------------------------------------------------------------------------
    void __fastcall TForm1::Label4MouseUp(TObject *Sender, TMouseButton Button,
    TShiftState Shift, int X, int Y)
    {
    /* O evento MouseUp de qualquer componente é o que ocorre quando se dá a subida
    do botão do mouse sobre o componente durante o clique. Ou seja, aquele que
    ocorre quando estamos deixando de pressionar o botão do mouse,
    no momento de soltá-lo.*/

    /* aumentará o tamanho da Font de Label4 durante o MouseUp,
    completando o efeito de profundidade de MouseDown*/
    Label4 -> Font -> Size = 10;
    }
    //---------------------------------------------------------------------------







    Para visualizar o código completo, sem os comentários, porém: Unit1.cpp e Unit1.h
    Todos os artigos por mim postados, estão hosp na própria Internet,Qualquer arquivo protegido deve permanecer,no máximo, 24 horas em seu computador. - Eles podem ser baixados apenas para teste, devendo o usuário apaga-lo ou comprá-lo apos 24 horas. - A Aquisição desses arquivos pela internet é de única e exclusiva responsabilidade do usuário.

Tópicos Similares

  1. Centrais da Luz em equação
    Por jonh05 no fórum Rio Ave Futebol Clube
    Respostas: 0
    Última Mensagem: 28-07-2010, 11:48
  2. Calcula o teu salário - Mt Fixe!!!
    Por ®JUVERUI no fórum Off Tópics
    Respostas: 0
    Última Mensagem: 29-03-2009, 00:57
  3. IMC : Calcula o teu
    Por mokyy no fórum Consultório Junior
    Respostas: 2
    Última Mensagem: 20-07-2008, 19:06
  4. Calcula a tua infância
    Por Paaf no fórum Divertidas
    Respostas: 6
    Última Mensagem: 09-03-2008, 23:49
  5. CALCULA O TEU SALARIO
    Por waterman no fórum Off Tópics
    Respostas: 0
    Última Mensagem: 15-01-2007, 19:40

Tags para este Tópico

Patrocínio em Destaque

Marcadores

Permissões de Postagem

  • Você não pode iniciar novos tópicos
  • Você não pode enviar respostas
  • Você não pode enviar anexos
  • Você não pode editar suas mensagens
  •