VB - Uma calculadora simples para você usar.
Esta precisando de uma calculdora simples para usar como utilitário no seu programa VB. Então siga-me...
- Inicie um novo projeto no VB e mude o nome do formulário padrão para frmcalculadora.
- Insira uma caixa de texto e alguns botões de comando conforme layout abaixo:
- Agora insira o seguinte código no formulário:
' Atencao : Partes deste programa foram adaptadas de programas de exemplo ' fornecidos pela Microsoft juntamente com o produto. ' ------------------------------------------------------------------------ Dim Op1 As Double ' Primeiro operando. Dim Op2 As Double ' Segundo operando. Dim FlagDecimal As Integer ' Flag do Ponto Decimal. Dim NumOps As Integer ' Numero de Operandos. Dim UltimaEntrada As String ' Indica a ultima tecla pressionada. Dim FlagOperacao As String ' Indica a operacao pendente Const VERDADEIRO = -1 Const FALSO = 0 ' Procedure para a tecla C (Cancela). ' Reseta o display e inicializa variaveis. ' Private Sub Cancel_Click() Number(0).SetFocus 'Volta o Controle para matriz de Numeros Visor.Caption = "0." Form_Load End Sub ' Procedure para a tecla CE (Cancela Entrada). ' Private Sub CancelEntry_Click() Number(0).SetFocus 'Volta o Controle para matriz de Numeros Visor.Caption = "0." FlagDecimal = FALSO UltimaEntrada = "CE" End Sub ' Procedure para a tecla de ponto decimal (.) . ' Se a ultima tecla pressiona fou operador, initializa ' Visor com "0." Senao, adiciona um ponto decimal no display. ' Private Sub Decimal_Click() If UltimaEntrada <> "NUMS" Then Visor.Caption = "0." ElseIf FlagDecimal = FALSO Then Visor.Caption = Visor.Caption + "." End If FlagDecimal = VERDADEIRO UltimaEntrada = "NUMS" End Sub ' Rotina de Inicializacao para o formulario ' Inicia todas as variaveis ' Private Sub Form_Load() CENTRALIZA_FORM Me FlagDecimal = FALSO NumOps = 0 UltimaEntrada = "NONE" FlagOperacao = " " End Sub Private Sub mnuSair_Click() End End Sub ' Procedure para as teclas de numeros (0-9). ' Adiciona o novo numero ao numero do display. ' Private Sub Number_Click(Index As Integer) If UltimaEntrada <> "NUMS" Then Visor.Caption = "" FlagDecimal = FALSO End If If Len(Visor.Caption) <= 15 Then 'Limita entrada valores a 15 digitos(inclusive pto decimal) Visor.Caption = Visor.Caption + Number(Index).Caption End If UltimaEntrada = "NUMS" Operator(4).SetFocus 'Posiciona o Foco na operação de igual End Sub Private Sub Number_KeyPress(Index As Integer, KeyAscii As Integer) '*** FAZ LEITURA DE TECLAS PRESSIONADAS *** If KeyAscii = 61 Then Operator_Click (4) 'Sinal de Igual ElseIf KeyAscii = 67 Or KeyAscii = 99 Then Cancel_Click 'Botao de Limpar ElseIf KeyAscii = 37 Then Percent_Click 'Sinal de Porcentagem ElseIf KeyAscii = 42 Or KeyAscii = 120 Or KeyAscii = 88 Then Operator_Click (2) 'Sinal de Multiplicação ElseIf KeyAscii = 43 Then Operator_Click (1) 'Sinal de Mais ElseIf KeyAscii = 45 Then Operator_Click (3) 'Sinal de Igual ElseIf KeyAscii = 46 Then Decimal_Click 'Ponto decimal ElseIf KeyAscii = 47 Then Operator_Click (0) 'Sinal de Divisao ElseIf KeyAscii = 48 Then Number_Click (0) ElseIf KeyAscii = 49 Then Number_Click (1) ElseIf KeyAscii = 50 Then Number_Click (2) ElseIf KeyAscii = 51 Then Number_Click (3) ElseIf KeyAscii = 52 Then Number_Click (4) ElseIf KeyAscii = 53 Then Number_Click (5) ElseIf KeyAscii = 54 Then Number_Click (6) ElseIf KeyAscii = 55 Then Number_Click (7) ElseIf KeyAscii = 56 Then Number_Click (8) ElseIf KeyAscii = 57 Then Number_Click (9) End If End Sub ' Procedure para os teclas de operadores (+, -, x, /, =). ' Se a tecla pressiona imediatamente foi parte de um ' numero, incrementa a variavel NumOps. Se um operando esta presente, ' "seta" Op1. Se dois operandos estao presentes, "seta" Op1 igual ao ' resultado da operacao em Op1 com a string entrada por ultimo e mostra ' o resultado. ' Private Sub Operator_Click(Index As Integer) Operator(4).SetFocus 'Volta o Controle para matriz de Numeros If UltimaEntrada = "NUMS" Then NumOps = NumOps + 1 End If If NumOps = 1 Then Op1 = Val(Visor.Caption) ElseIf NumOps = 2 Then Op2 = Val(Visor.Caption) Select Case FlagOperacao Case "+" Op1 = Op1 + Op2 Case "-" Op1 = Op1 - Op2 Case "X" Op1 = Op1 * Op2 Case "/" If Op2 = 0 Then MsgBox "Erro, Divisão por zero impossível", 48, "Spasso Calc" Else Op1 = Op1 / Op2 End If Case "=" Op1 = Op2 End Select Visor.Caption = Format$(Op1) NumOps = 1 End If UltimaEntrada = "OPS" FlagOperacao = Operator(Index).Caption End Sub Private Sub Operator_KeyPress(Index As Integer, KeyAscii As Integer) '*** FAZ LEITURA DE TECLAS PRESSIONADAS *** If KeyAscii = 61 Then Operator_Click (4) 'Sinal de Igual ElseIf KeyAscii = 67 Or KeyAscii = 99 Then Cancel_Click 'Botao de Limpar ElseIf KeyAscii = 37 Then Percent_Click 'Sinal de Porcentagem ElseIf KeyAscii = 42 Or KeyAscii = 120 Or KeyAscii = 88 Then Operator_Click (2) 'Sinal de Multiplicação ElseIf KeyAscii = 43 Then Operator_Click (1) 'Sinal de Mais ElseIf KeyAscii = 45 Then Operator_Click (3) 'Sinal de Igual ElseIf KeyAscii = 46 Then Decimal_Click 'Ponto decimal ElseIf KeyAscii = 47 Then Operator_Click (0) 'Sinal de Divisao ElseIf KeyAscii = 48 Then Number_Click (0) ElseIf KeyAscii = 49 Then Number_Click (1) ElseIf KeyAscii = 50 Then Number_Click (2) ElseIf KeyAscii = 51 Then Number_Click (3) ElseIf KeyAscii = 52 Then Number_Click (4) ElseIf KeyAscii = 53 Then Number_Click (5) ElseIf KeyAscii = 54 Then Number_Click (6) ElseIf KeyAscii = 55 Then Number_Click (7) ElseIf KeyAscii = 56 Then Number_Click (8) ElseIf KeyAscii = 57 Then Number_Click (9) End If End Sub ' Procedure para a tecla de percentagem (%). ' Computa and mostra a percentagem do primeiro operando. ' Private Sub Percent_Click() Visor.Caption = Format$(Op1 * Val(Visor.Caption) / 100) End Sub Public Sub CENTRALIZA_FORM(Formulario As Form) On Error Resume Next 'Evita erro caso o usuário minimize o Form With Formulario .Left = (Screen.Width - .Width) / 2 'Alinha o form no horizontalmente no centro .Top = (Screen.Height - .Height) / 2 'Alinha o form no verticalmente no centro End With |
Para usar a calculadora no seu projeto basta incluir o formulário nele e pronto !!!
José Carlos Macoratti