Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [VB6] Обработка кнопки "ESC"


Автор: kostyaizznu 22.12.2008, 20:04
Вот текст программы,помогите дописать код, чтобы при нажатии "ESC"  программа завершала работу и осуществлялся выход


Код

Option Explicit
Dim MR As Long
Public deystvie As String
Public pervoe As Double
Public vtoroe As Double


Private Sub Command1_Click()
MR = MR + Val(Tablo.Caption)
Tablo.Caption = ""
End Sub

Private Sub Command2_Click()
Tablo.Caption = MR
End Sub

Private Sub Command3_Click()
MR = 0
End Sub

Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

  If KeyCode = 46 Then sbros_Click
  If KeyCode = 110 Then tochka_Click

End Sub

Private Sub Form_KeyPress(KeyAscii As Integer)

  Select Case KeyAscii

    Case 8
      udalit_Click

    Case 42, 43, 45, 47
      operacia_Click (47 - KeyAscii)
    
    Case 61
      plusmin_Click

    Case Is > 47
      If KeyAscii < 58 Then knopka_Click (KeyAscii - 48)

    Case 32
      ochistka_Click

  End Select

End Sub


Private Sub knopka_Click(Index As Integer)

    umnaya.SetFocus
  ' если были выбраны равно или операция - ввод нового числа:
  If Ravno.Tag = "второе" Then Tablo.Caption = "0": Ravno.Tag = ""

  If Len(Tablo.Caption) < 16 Then
    ' если длина не превышает допустимой длины числа:
    If Tablo.Caption = "0." And Tablo.Tag = "" Then
      '  если на табло ноль и нет режима начала ввода дробного числа - заменяем цифрой c точкой:
      Tablo.Caption = Index & "."

    Else

      If Mid(Tablo.Caption, Len(Tablo.Caption), 1) = "." And Tablo.Tag <> "не целое" Then
        ' на табло целое число и нет режима ввода дробного числа - добавляем цифру к имеющемуся числу справа
        Tablo.Caption = Mid(Tablo.Caption, 1, Len(Tablo.Caption) - 1) & Index

      Else
        '  на табло дробное число или режим ввода дробного числа - добавляем цифру к надписи табло справа
        Tablo.Caption = Tablo.Caption & Index
 
      End If

    End If

  End If

  Tablo.Tag = ""    ' возможен ввод дробного числа

End Sub


Private Sub ochistka_Click()

    umnaya.SetFocus

  
  Tablo.Caption = "0"
  Tablo.Tag = ""

End Sub


Private Sub operacia_Click(Index As Integer)

  umnaya.SetFocus

  If Ravno.Tag = "" Then
    If deystvie <> "нет" Then vtoroe = Val(Tablo.Caption): rezultat

  End If

  Select Case Index
    Case 0
      deystvie = "разделить"

    Case 2
      deystvie = "вычесть"

    Case 4
      deystvie = "сложить"

    Case 5
      deystvie = "умножить"

  End Select

    pervoe = Val(Tablo.Caption)
    Ravno.Tag = "второе"
End Sub

Private Sub plusmin_Click()

    umnaya.SetFocus

  Select Case Val(Tablo.Caption)
    
    Case Is < 0
      Tablo.Caption = Mid(Tablo.Caption, 2, Len(Tablo.Caption))
    
    Case Is > 0
      Tablo.Caption = "-" & Tablo.Caption

  End Select

End Sub

Private Sub ravno_Click()

    umnaya.SetFocus

  If Ravno.Tag <> "второе" Then
    
    vtoroe = Val(Tablo.Caption)
  
  Call rezultat

    Ravno.Tag = "второе"           ' режим ввода "второго" числа
    Tablo.Tag = ""                 ' две переменные ука-
    deystvie = "нет"               ' зывают начальное состояние

  Else
  
    Ravno.Tag = ""                 ' можем в "следующий раз" считать вторым число текущее число табло
   
  End If

End Sub
Private Sub rezultat()

  Select Case deystvie

    Case "сложить"
      Tablo.Caption = pervoe + vtoroe

    Case "вычесть"
      Tablo.Caption = pervoe - vtoroe

    Case "разделить"
      If vtoroe <> 0 Then
        Tablo.Caption = pervoe / vtoroe
      Else ' на ноль нельзя делить!
        Tablo.Caption = "ERROR!!"
      End If

    Case "умножить"
      Tablo.Caption = pervoe * vtoroe

  End Select

End Sub

Private Sub sbros_Click()

    umnaya.SetFocus

    deystvie = "нет"

  Tablo.Caption = "0"
  Tablo.Tag = ""

End Sub

Private Sub Tablo_Change()

Dim z As Byte, t As Byte

    z = InStr(1, Tablo.Caption, ",")  ' если результат дробное число - ищет позицию запятой
    t = InStr(1, Tablo.Caption, ".")  ' определяет позицию точки

  If t = 0 Then
    ' если точка не найдётся ставим её в конце
    Tablo.Caption = Tablo.Caption & "."

  ElseIf z <> 0 Then
    ' если нашлась запятая - значение операции дробное число - меняем запятую на точку
    Tablo.Caption = Mid(Tablo.Caption, 1, z - 1) & "." & Mid(Tablo.Caption, z + 1, Len(Tablo.Caption) - z - 1)

  End If

End Sub

Private Sub tochka_Click()

    umnaya.SetFocus

  ' если число целое, то разрешаем ввести дробное число:
  If Fix(Val(Tablo.Caption)) = Val(Tablo.Caption) Or Ravno.Tag = "второе" Then Tablo.Tag = "не целое"
  
  If Ravno.Tag = "второе" Then Tablo.Caption = "0"

End Sub

Private Sub udalit_Click()

    umnaya.SetFocus

    ' является ли число целым?
    If Fix(Val(Tablo.Caption)) = Val(Tablo.Caption) Then
      ' если целое - удалим последнюю цифру
      Tablo.Caption = Mid(Tablo.Caption, 1, Len(Tablo.Caption) - 2)
      ' а если число было нулём - то так и оставим - "ноль":
      If Tablo.Caption = "." Then Tablo.Caption = "0"

    Else
      ' если на табло число не целое, то просто удалим последнюю цифру надписи
      Tablo.Caption = Mid(Tablo.Caption, 1, Len(Tablo.Caption) - 1)

    End If

End Sub

Private Sub umnaya_KeyPress(KeyAscii As Integer)
  
  If KeyAscii = 13 Then ravno_Click

End Sub


Автор: kostyaizznu 22.12.2008, 20:19
Программа - - - КАЛЬКУЛЯТОР

Автор: Akina 22.12.2008, 21:44
Для домашних заданий, курсовых, существует "Центр Помощи".

Тема перенесена! 

Автор: mb78 27.12.2008, 02:21
Добавить это  в  Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer)

If KeyCode = 27 Then End

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)