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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Калькулятор, Помогите с кодом для программы 
:(
    Опции темы
Lose
  Дата 14.5.2005, 14:45 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Всем привет ! У меня такой вопрос - решил сделать калькулятор и ни как не могу понять как сделать чтобы он работал с клавой т.е как стандартный ! У меня получается так - ввожу Первое число в TextBox, потом ввожу второе, нажимаю Плюс, а он мне вписывает этот + в Textbox, а мне нужно, чтобы он действовал с клавы !Вроде нормально объяснил !!! Заранее спасибо за ответ !
  Вверх
Voldemar2004
Дата 14.5.2005, 15:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Для начала создай коллекцию кнопок: 1-9, оператор Selet .. Case.
Используй acsii обработчик событий клавы.
Почитай справочник. smile

Это сообщение отредактировал(а) Voldemar2004 - 14.5.2005, 18:25


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Вадян!
Дата 14.5.2005, 16:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Для начала можно сделать и подругому (просто) вот так
ПРИМЕР
Я с етого начинал, да и у меня МСДН до сих пор нету блин smile
PM MAIL   Вверх
Staruha
Дата 16.5.2005, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1292
Регистрация: 1.2.2004
Где: Казань

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



Я думаю ты все понял.Надо сделать кнопку "плюс" и "минус" и т.п. smile


--------------------
Возмездие настигнет
PM MAIL   Вверх
Voldemar2004
Дата 23.5.2005, 13:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Первые 2 примера написаны Никитой Культином (препод в Петербургском универе информатики, - "хотя б мог * и / сделать" - странные мысли все это наводит, - подумал Я, "он че не знает других действий кроме + и - ??") Пример взят из книги "основы VB".
15 кнопок: 0-9 , + - = Clean

Код

' Вариант 1. Событие Click на каждой цифровой кнопке
' обрабатывает отдельная процедура

Dim accum As Single     ' аккумулятор
Dim oper As Integer     ' операция: 1 - "+", 2 - "-",
                        ' 0 - "выполнить" (кнопка "=")
Dim f As Integer
' f = 0 ожидание первой цифры нового числа, например, после
' выполнения операции, когда на индикаторе результат.
' f = 1 ожидание ввода остальных цифр.

' кнопка "0"
Private Sub Command0_Click()
   If f = 0 Then    ' первая цифра числа
         Text1.Text = "0"
         f = 1      ' ожидание остальных цифр
  Else

      ' Следующие условие нужно для того, чтобы на индикаторе
      ' не появлялось нескольких нулей в начале числа.
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "0"
      End If
   End If
End Sub

' кнопка "1"
Private Sub Command1_Click()
   If f = 0 Then   ' первая цифра числа
      Text1.Text = "1"
      f = 1        ' ожидание остальных цифр
   Else
      ' В случае, когда после выбора операции пользователь
      ' нажал "0", переменной f присваивается значение 1,
      ' ожидается ввод остальных цифр числа. Для того, чтобы
      ' в поле ввода не появлялось чисел, начинающихся с нуля,
      ' не являющихся дробными (например "01"), необходимо
      ' выполнение следующего условия.
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "1"
      Else: Text1.Text = "1"
      End If
   End If
End Sub

' кнопка "2"
Private Sub Command2_Click()
   If f = 0 Then
      Text1.Text = "2"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "2"
      Else: Text1.Text = "2"
      End If
   End If
End Sub

' кнопка "3"
Private Sub Command3_Click()
   If f = 0 Then
      Text1.Text = "3"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "3"
      Else: Text1.Text = "3"
      End If
   End If
End Sub

' кнопка "4"
Private Sub Command4_Click()
   If f = 0 Then
      Text1.Text = "4"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "4"
      Else: Text1.Text = "4"
      End If
   End If
End Sub

' кнопка "5"
Private Sub Command5_Click()
   If f = 0 Then
      Text1.Text = "5"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "5"
      Else: Text1.Text = "5"
      End If
   End If
End Sub

' кнопка "6"
Private Sub Command6_Click()
   If f = 0 Then
      Text1.Text = "6"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "6"
      Else: Text1.Text = "6"
      End If
   End If
End Sub

' кнопка "7"
Private Sub Command7_Click()
   If f = 0 Then
      Text1.Text = "7"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "7"
      Else: Text1.Text = "7"
      End If
   End If
End Sub

' кнопка "8"
Private Sub Command8_Click()
   If f = 0 Then
      Text1.Text = "8"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "8"
      Else: Text1.Text = "8"
      End If
   End If
End Sub

' кнопка "9"
Private Sub Command9_Click()
   If f = 0 Then
      Text1.Text = "9"
      f = 1
   Else
      If Text1.Text <> "0" Then
         Text1.Text = Text1.Text + "9"
      Else: Text1.Text = "9"
      End If
   End If
End Sub

' кнопка "c" - очистка
Private Sub CommandC_Click()
   Text1.Text = "0"
   accum = 0
   oper = 0
   f = 0            ' ожидание первой цифры числа
End Sub

' кнопка "+"
Private Sub CommandPlus_Click()
   ' При нажатии на кнопку "+" нужно: выполнить предыдущую
   ' операцию, вывести результат на индикатор, запомнить
   ' текущую операцию и установить режим ожидания первой
   ' цифры нового числа.
   If f = 0 Then
      ' пользователь щелкнул на кнопку операции, но поле ввода
      ' находится в ожидание ввода первой цифры числа
      oper = 1      ' запоминание операции
   Else
      ' на индикаторе есть число, пользователь щелкнул
      ' на кнопку операции
      DoOper        ' выполнение предыдущей операции
      oper = 1      ' запоминание текущей операции
      f = 0         ' ожидание первой цифры нового числа
   End If
End Sub

' кнопка "-"
Private Sub CommandMinus_Click()
   ' см. комментарий к проц. обработки события Click
   ' на кнопке "+"
   If f = 0 Then
      oper = 2      ' запоминание операции
   Else
      DoOper        ' выполнение предыдущей операции
      oper = 2      ' запоминание текущей операции
      f = 0         ' ожидание первой цифры нового числа
   End If
End Sub

' кнопка "="
Private Sub CommandEnter_Click()
   ' см. комментарий к проц. обработки события Click
   ' на кнопке "+"
   If f = 0 Then
      oper = 0      ' запоминание операции
   Else
    DoOper          ' выполнение предыдущей операции
    oper = 0        ' запоминание текущей операции
    f = 0           ' ожидание первой цифры нового числа
   End If
End Sub

' десятичная точка ","
Private Sub CommandZ_Click()
   If Text1.Text = "0" Then
      Text1.Text = "0."
      f = 1
   End If
   If InStr(Text1.Text, ".") = 0 Then
      Text1.Text = Text1.Text + "."
   End If
End Sub

' процедура выполнения операции
Sub DoOper()
   Dim numb As Single  ' число на индикаторе

   ' accum содержит результат предыдущей операции,
   ' oper - код операции, которую нужно выполнить,
   ' операнд находится на индикаторе.

   numb = Val(Text1.Text)

   Select Case oper
      Case 0: accum = numb
      Case 1: accum = accum + numb
      Case 2: accum = accum - numb
   End Select

   Text1.Text = Format$(accum)
End Sub

' инициализация формы
Private Sub Form_Initialize()
   oper = 0
End Sub

' нажатие клавиши в поле ввода цифр
Private Sub Text1_KeyPress(KeyAscii As Integer)
   ' запрет ввода данных с клавиатуры
   KeyAscii = 0
End Sub



' Вариант 2. Событие Click на всех цифровых кнопках
' обрабатывает одна процедура
' 1.  Во время инициализации формы свойству Tag каждой
'     цифровой кнопки надо присвоить значение равное цифре,
'     которая должна появится на индикаторе калькулятора.
' 2.  Процедура DigitClick обрабатывает щелчок на кнопках
'     "0" - "9". В качестве входного параметра этой
'     процедуры используется имя кнопки, для которой эта
'     процедура должна выполниться.
' 3.  Процедура OperClick обрабатывает щелчок на кнопках
'     "+", "-" и "=".
Dim accum As Single     ' аккумулятор
Dim oper As Integer     ' опрерация: 1 - "+", 2 - "-",
                        ' 0 - "выполнить" (кнопка "=")
Dim f As Integer
' f = 0 ожидание первой цифры нового числа, например, после
' выполнения операции, когда на индикаторе результат.
' f = 1 ожидание ввода остальных цифр.

' процедура обработки щелчка на кнопках "0" - "9"
Sub DigitClick(Command As CommandButton)
   Select Case Command.Tag
      Case 1 To 9
         If f = 0 Then   ' первая цифра числа
            Text1.Text = Format$(Command.Tag)
            f = 1        ' ждем остальные цифры
         Else
            ' В случае, когда после выбора операции
            ' пользователь нажал "0", переменной f
            ' присваивается значение 1, ожидается ввод
            ' остальных цифр числа. Для того, чтобы в поле
            ' ввода не появлялось чисел, начинающихся с нуля,
            ' не являющихся дробными (например "01"),
            ' необходимо выполнение следующего условия.
            If Text1.Text <> "0" Then
               Text1.Text = Text1.Text + Format$(Command.Tag)
            Else: Text1.Text = Format$(Command.Tag)
            End If
         End If
      Case 0
         If f = 0 Then    ' первая цифра числа
            Text1.Text = "0"
            f = 1         ' ожидание остальных цифр
         Else
            ' Следующее условие нужно для того, чтобы на
            ' индикаторе не появлялось нескольких нулей
            ' в начале числа.
            If Text1.Text <> "0" Then
               Text1.Text = Text1.Text + "0"
            End If
         End If
   End Select
End Sub

' процедура обработки щелчка на кнопках "+", "-" и "="
Sub OperClick(det As Integer)
   ' При нажатии на кнопку "+", "-" или "=" нужно: выполнить
   ' предыдущую операцию, вывести результат на индикатор,
   ' запомнить текущую операцию и установить режим ожидания
   ' первой цифры нового числа.
   ' det определяет кнопку: 1 - "+", 2 - "-", 0 - "="
   If f = 0 Then
      ' пользователь щелкнул на кнопку операции, но поле ввода
      ' находится в ожидании ввода первой цифры числа
      Select Case det  ' запоминание операции
         Case 0: oper = 0
         Case 1: oper = 1
         Case 2: oper = 2
      End Select
   Else
      ' на индикаторе есть число, пользователь щелкнул
      ' на кнопку операции
      DoOper           ' выполнение предыдущей операции
      Select Case det  ' запоминание текущей операции
         Case 0: oper = 0
         Case 1: oper = 1
         Case 2: oper = 2
      End Select
      f = 0            ' ожидание первой цифры нового числа
   End If
End Sub

' кнопка "0"
Private Sub Command0_Click()
   Call DigitClick(Command0)
End Sub

' кнопка "1"
Private Sub Command1_Click()
   Call DigitClick(Command1)
End Sub

' кнопка "2"
Private Sub Command2_Click()
   Call DigitClick(Command2)
End Sub

' кнопка "3"
Private Sub Command3_Click()
   Call DigitClick(Command3)
End Sub

' кнопка "4"
Private Sub Command4_Click()
   Call DigitClick(Command4)
End Sub

' кнопка "5"
Private Sub Command5_Click()
   Call DigitClick(Command5)
End Sub

' кнопка "6"
Private Sub Command6_Click()
   Call DigitClick(Command6)
End Sub

' кнопка "7"
Private Sub Command7_Click()
   Call DigitClick(Command7)
End Sub

' кнопка "8"
Private Sub Command8_Click()
   Call DigitClick(Command8)
End Sub

' кнопка "9"
Private Sub Command9_Click()
   Call DigitClick(Command9)
End Sub

' кнопка "c" - очистка
Private Sub CommandC_Click()
   Text1.Text = "0"
   accum = 0
   oper = 0
   f = 0        ' ожидание первой цифры числа
End Sub

' кнопка "+"
Private Sub CommandPlus_Click()
   Call OperClick(1)
End Sub

' кнопка "-"
Private Sub CommandMinus_Click()
   Call OperClick(2)
End Sub

' кнопка "="
Private Sub CommandEnter_Click()
   Call OperClick(0)
End Sub

' десятичная точка ","
Private Sub CommandZ_Click()
   If Text1.Text = "0" Then
      Text1.Text = "0."
      f = 1
   End If
   If InStr(Text1.Text, ".") = 0 Then
      Text1.Text = Text1.Text + "."
   End If
End Sub

' процедура выполнения операции
Sub DoOper()
   Dim numb As Single  ' число на индикаторе

   ' accum содержит результат предыдущей операции,
   ' oper - код операции, которую нужно выполнить,
   ' операнд находится на индикаторе.

   numb = Val(Text1.Text)

   Select Case oper
      Case 0: accum = numb
      Case 1: accum = accum + numb
      Case 2: accum = accum - numb
   End Select

   Text1.Text = Format$(accum)
End Sub

' инициализация формы
Private Sub Form_Initialize()
   ' задание значений свойства Tag для кнопок "0" - "9"
   Command0.Tag = 0
   Command1.Tag = 1
   Command2.Tag = 2
   Command3.Tag = 3
   Command4.Tag = 4
   Command5.Tag = 5
   Command6.Tag = 6
   Command7.Tag = 7
   Command8.Tag = 8
   Command9.Tag = 9

   oper = 0
End Sub

' нажатие клавиши в поле ввода цифр
Private Sub Text1_KeyPress(KeyAscii As Integer)
   ' запрет ввода данных с клавиатуры
   KeyAscii = 0
End Sub
[code=vb]

Мой собственный пример:

[/code=vb]
Option Explicit
Dim B As Integer
Dim A As Double

Private Sub Command1_Click()
Text1.Text = Text1.Text + "1"
End Sub

Private Sub Command10_Click()
Text1.Text = Text1.Text + "6"
End Sub

Private Sub Command11_Click()
Text1.Text = Text1.Text + "7"
End Sub

Private Sub Command12_Click()
Text1.Text = Text1.Text + "8"
End Sub

Private Sub Command13_Click()
Text1.Text = Text1.Text + "9"
End Sub

Private Sub Command14_Click()
Text1.Text = Text1.Text + "0"
End Sub

Private Sub Command15_Click()
B = 4
A = Val(Text1.Text)
'Text1.Text = ""
Print A
End Sub

Private Sub Command16_Click()
Text1.Text = Text1.Text + "."
End Sub

Private Sub Command17_Click() 'копка "степень"
Text1.Text = Text1.Text + "-"
End Sub

Private Sub Command18_Click()
B = 3
A = Val(Text1.Text)
Text1.Text = ""
Print A
End Sub

Private Sub Command19_Click()
B = 5
A = Val(Text1.Text)
Text1.Text = ""
Print A
End Sub

Private Sub Command2_Click()
Text1.Text = Text1.Text + "2"
End Sub

Private Sub Command3_Click()
Text1.Text = Text1.Text + "3"
End Sub

Private Sub Command4_Click() 'кнопка сложения
B = 1
A = Val(Text1.Text)
Text1.Text = ""
Print A
End Sub

Private Sub Command5_Click()
If B = 1 Then Text1.Text = Text1.Text + A         'сложение
If B = 2 Then Text1.Text = A - Val(Text1.Text)    'вычитание
If B = 3 Then Text1.Text = A / Val(Text1.Text)    'деление
If B = 4 Then Text1.Text = Val(Text1.Text) ^ 0.5  'корень
If B = 5 Then Text1.Text = A * Val(Text1.Text)    'умножение
End Sub

Private Sub Command6_Click() 'кнопка вычитания
A = Text1.Text
Print A
Text1.Text = ""
B = 2
End Sub

Private Sub Command7_Click()
Text1.Text = ""
End Sub

Private Sub Command8_Click()
Text1.Text = Text1.Text + "4"
End Sub

Private Sub Command9_Click()
Text1.Text = Text1.Text + "5"
End Sub


И вообще лучше сделать калькулятор типа инженерного: выражение1...действие1... и т.п. = результат - ну, тригонометрию прибавить и т.п.

З.Ы. А за флейм, cardinal, не злись, просто я тогда спросил про фильм, разве есть люди, кому он не понравился? smile

Это сообщение отредактировал(а) Voldemar2004 - 23.5.2005, 13:46


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
Gannibal
Дата 23.5.2005, 15:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



а так не проще?

Код

Dim op1, op2
Dim i
Dim dec
Dim rov
Private Sub cancelentry_Click()
out.Caption = "0"
i = 1
dec = 0
End Sub

Private Sub del_Click()
op1 = out.Caption
i = 1
dec = 0
rov = 4
End Sub

Private Sub Form_Load()
i = 1
End Sub

Private Sub min_Click()
op1 = out.Caption
i = 1
dec = 0
rov = 2
End Sub

Private Sub num0_Click()
If i = 1 Then
If out.Caption = "0" Then Exit Sub
If out.Caption = "-0" Then Exit Sub
i = 0
out.Caption = num0.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If
If out.Caption = "0" Then Exit Sub
out.Caption = out.Caption + num0.Caption
End If
End Sub

Private Sub num1_Click()
If i = 1 Then
i = 0
out.Caption = num1.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num1.Caption
End If
End Sub

Private Sub num2_Click()
If i = 1 Then
i = 0
out.Caption = num2.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num2.Caption
End If
End Sub

Private Sub num3_Click()
If i = 1 Then
i = 0
out.Caption = num3.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num3.Caption
End If
End Sub

Private Sub num4_Click()
If i = 1 Then
i = 0
out.Caption = num4.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num4.Caption
End If
End Sub

Private Sub num5_Click()
If i = 1 Then
i = 0
out.Caption = num5.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num5.Caption
End If
End Sub

Private Sub num6_Click()
If i = 1 Then
i = 0
out.Caption = num6.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num6.Caption
End If
End Sub

Private Sub num7_Click()
If i = 1 Then
i = 0
out.Caption = num7.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num7.Caption
End If
End Sub

Private Sub num8_Click()
If i = 1 Then
i = 0
out.Caption = num8.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num8.Caption
End If
End Sub

Private Sub num9_Click()
If i = 1 Then
i = 0
out.Caption = num9.Caption
Exit Sub
Else
If Len(out.Caption) >= 50 Then
Beep
Exit Sub
End If

out.Caption = out.Caption + num9.Caption
End If
End Sub

Private Sub plus_Click()
op1 = out.Caption
i = 1
dec = 0
rov = 1
End Sub

Private Sub rovno_Click()
Dim text
op2 = out.Caption
If rov = 1 Then
On Error GoTo nex
out.Caption = CDbl(op1) + CDbl(op2)
GoTo nex:
End If
If rov = 2 Then
On Error GoTo nex
text = CDbl(op1) - CDbl(op2)
out.Caption = text
GoTo nex:
End If
If rov = 3 Then
On Error GoTo nex
out.Caption = CDbl(op1) * CDbl(op2)
GoTo nex:
End If
If rov = 4 Then
If op2 = 0 Then
out.Caption = "Nuljom nel'zya delit'"
GoTo nex
Else
On Error GoTo nex
out.Caption = CDbl(op1) / CDbl(op2)
GoTo nex:
End If
End If
If rov = 5 Then
On Error Resume Next
out.Caption = op1 ^ op2
GoTo nex:
End If
Exit Sub
nex:
i = 1
dec = 0
rov = 0
End Sub

Private Sub umn_Click()
op1 = out.Caption
i = 1
dec = 0
rov = 3
End Sub


Это сообщение отредактировал(а) M.E.G.U.S - 23.5.2005, 16:29

Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  kalk_code.zip


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Vach
Дата 23.5.2005, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Проще так smile
Код
Option Explicit
Private fScriptFlagEnabled As Boolean

Private Sub Form_Load()
Me.Caption = "Calculator"
Me.Width = 5000
Me.Height = 5000
fScriptFlagEnabled = True
    ' ниже две строки = для примера :)
    Text1.Text = "(2 * 5) + 3"
    Text1.SelStart = Len("(2 * 5) + 3")
End Sub

Private Sub Form_Resize()
With Text1
    .Left = 0
    .Top = 0
    .Height = Me.Height - 500
    .Width = Me.Width - 110
End With
DoEvents
End Sub

Private Sub Text1_Change()
If fScriptFlagEnabled = True Then
    Dim nF1 As Integer
    Dim Row() As String
    Dim sRez As String
    Dim sEval As String
    Dim nTextCursor As Integer
    With Text1
        nTextCursor = .SelStart
        fScriptFlagEnabled = False
        Row = Split(.Text, vbCrLf, -1, vbBinaryCompare)
        For nF1 = 0 To UBound(Row)
            If (Mid(Row(nF1), 1, 11) <> "Результат: ") And (Row(nF1) <> "") Then
                sEval = OnErrorEval(Row(nF1))
                sRez = sRez & Row(nF1) & vbCrLf
                If sEval <> "" Then sRez = sRez & "Результат: " & sEval & vbCrLf
            End If
        Next nF1
        .Text = sRez
        .SelStart = nTextCursor
        fScriptFlagEnabled = True
    End With
End If
End Sub

Private Function OnErrorEval(Expression As String) As String
On Error GoTo Error
OnErrorEval = ScriptControl1.Eval(Expression)
Exit Function
Error:
OnErrorEval = "Error"
End Function


Присоединённый файл ( Кол-во скачиваний: 8 )
Присоединённый файл  Calculator.zip
PM MAIL ICQ   Вверх
Voldemar2004
Дата 23.5.2005, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1650
Регистрация: 25.12.2004

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



Мне кажется вот так проще:

Код

Option Explicit    
Dim B As Integer    
Dim A As Double    
Private Sub Command1_Click()    
Text1.Text = Text1.Text + "1"    
End Sub    
Private Sub Command10_Click()    
Text1.Text = Text1.Text + "6"    
End Sub    
Private Sub Command11_Click()    
Text1.Text = Text1.Text + "7"    
End Sub    
Private Sub Command12_Click()    
Text1.Text = Text1.Text + "8"    
End Sub    
Private Sub Command13_Click()    
Text1.Text = Text1.Text + "9"    
End Sub    
Private Sub Command14_Click()    
Text1.Text = Text1.Text + "0"    
End Sub    
Private Sub Command15_Click()    
B = 4    
A = Val(Text1.Text)    
'Text1.Text = ""    
Print A    
End Sub    
Private Sub Command16_Click()    
Text1.Text = Text1.Text + "."    
End Sub    
Private Sub Command17_Click() 'копка "степень"    
Text1.Text = Text1.Text + "-"    
End Sub    
Private Sub Command18_Click()    
B = 3    
A = Val(Text1.Text)    
Text1.Text = ""    
Print A    
End Sub    
Private Sub Command19_Click()    
B = 5    
A = Val(Text1.Text)    
Text1.Text = ""    
Print A    
End Sub    
Private Sub Command2_Click()    
Text1.Text = Text1.Text + "2"    
End Sub    
Private Sub Command3_Click()    
Text1.Text = Text1.Text + "3"    
End Sub    
Private Sub Command4_Click() 'кнопка сложения    
B = 1    
A = Val(Text1.Text)    
Text1.Text = ""    
Print A    
End Sub    
Private Sub Command5_Click()    
If B = 1 Then Text1.Text = Text1.Text + A         'сложение    
If B = 2 Then Text1.Text = A - Val(Text1.Text)    'вычитание    
If B = 3 Then Text1.Text = A / Val(Text1.Text)    'деление    
If B = 4 Then Text1.Text = Val(Text1.Text) ^ 0.5  'корень    
If B = 5 Then Text1.Text = A * Val(Text1.Text)    'умножение    
End Sub    
Private Sub Command6_Click() 'кнопка вычитания    
A = Text1.Text    
Print A    
Text1.Text = ""    
B = 2    
End Sub    
Private Sub Command7_Click()    
Text1.Text = ""    
End Sub    
Private Sub Command8_Click()    
Text1.Text = Text1.Text + "4"    
End Sub    
Private Sub Command9_Click()    
Text1.Text = Text1.Text + "5"    
End Sub


А вы как определяете простоту? Чем меньше строк, тем проще? smile


--------------------
i_i 
(';') 
(V)

user posted image
PM MAIL   Вверх
cardinal
Дата 23.5.2005, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Инженер
****


Профиль
Группа: Экс. модератор
Сообщений: 6003
Регистрация: 26.3.2002
Где: Германия

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



Vach, хотел тебе просто сказать, что есть Script Control, который может тебе посчитать значение выражения... А то что предлагаешь ты это тот же Microsoft'овский калькулятор (преимущество которого правда заключается в работе с офигенно длинными числами).


--------------------
Немецкая оппозиция потребовала упростить натурализацию иммигрантов
В моем блоге: Разные истории из жизни в Германии

"Познание бесконечности требует бесконечного времени, а потому работай не работай - все едино".  А. и Б. Стругацкие
PM   Вверх
Gannibal
Дата 23.5.2005, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(Voldemar2004 @ 23.5.2005, 19:16)
Мне кажется вот так проще:

чё будем соревноваться кто напишет самый меньший код на калькулятор smile smile


--------------------
Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить!
PM MAIL ICQ   Вверх
Vach
Дата 24.5.2005, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



cardinal а я простите чем пользуюсь? (OnErrorEval >> ScriptControl1)
Вся запутка там просто чтобы можно считать несколько строк.
smile дело было вечером, делать было нечего smile
PM MAIL ICQ   Вверх
Exception
Дата 17.12.2005, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


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

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



Народ, а чего кнопок наплодили? Можно же массивом)
PM   Вверх
NewSWA
Дата 17.12.2005, 07:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



А зачем вообще нужны эти кнопки. Ведь можно просто ввести выражение в текстовое поле, а далее просто обработать его.
Это выглядит более приятно чем форма с кучей кнопок.
PM MAIL   Вверх
Akina
Дата 17.12.2005, 12:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

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



NewSWA имхо прав. как сделать evaluation выражения - описано в ФАКе.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


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

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


 




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


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

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