Модераторы: Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> [C++]Обработка кнопки "ESC", Помогите дописать программу  
:(
    Опции темы
kostyaizznu
Дата 23.12.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 88
Регистрация: 30.10.2008
Где: Запорожье

Репутация: нет
Всего: нет




Программа - - - КАЛЬКУЛЯТОР 
Вот текст программы,помогите дописать код, чтобы при нажатии "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

PM MAIL ICQ Skype   Вверх
likehood
Дата 24.12.2008, 11:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


666
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 21.12.2005

Репутация: 12
Всего: 24



для начала укажи правильный язык в названии темы (у тебя вроде бы VB, а в названии стоит С++)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Центр помощи"

ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Несоблюдение правил может повлечь за собой самые строгие меры от закрытия/удаления темы до бана пользователя!


  • Название темы должно отражать её суть! (Не следует добавлять туда слова "помогите", "срочно" и т.п.)
  • При создании темы, первым делом в квадратных скобках укажите область, из которой исходит вопрос (язык, дисциплина, диплом). Пример: [C++].
  • В названии темы не нужно указывать происхождение задачи (например "школьная задача", "задача из учебника" и т.п.), не нужно указывать ее сложность ("простая задача", "легкий вопрос" и т.п.). Все это можно писать в тексте самой задачи.
  • Если Вы ошиблись при вводе названия темы, отправьте письмо любому из модераторов раздела (через личные сообщения или report).
  • Для подсветки кода пользуйтесь тегами [code][/code] (выделяйте код и нажимаете на кнопку "Код"). Не забывайте выбирать при этом соответствующий язык.
  • Помните: один топик - один вопрос!
  • В данном разделе запрещено поднимать темы, т.е. при отсутствии ответов на Ваш вопрос добавлять новые ответы к теме, тем самым поднимая тему на верх списка.
  • Если вы хотите, чтобы вашу проблему решили при помощи определенного алгоритма, то не забудьте описать его!
  • Если вопрос решён, то воспользуйтесь ссылкой "Пометить как решённый", которая находится под кнопками создания темы или специальным флажком при ответе.

Более подробно с правилами данного раздела Вы можете ознакомится в этой теме.

Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Центр помощи | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.