Форум программистов, компьютерный форум, киберфорум
Visual Basic
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 8
1

Калькулятор. Какая нужно команда?

10.11.2013, 00:17. Показов 3889. Ответов 20

Author24 — интернет-сервис помощи студентам
Здравствуйте.
Написал калькулятор ан VB 6.0. Все хорошо работает, но есть одна проблема. Когда я получил значение, например: 2+2 на экране, созданного мной калькулятора, вышел ответ. И когда я ввожу новое число, оно записывается в окошко калькулятора вместе с предыдущим ответом, т.е. я получил ответ 4, затем нажал на 2, и на экране получилось 42. Какую команду нужно ввести в код программы, чтобы предыдущий ответ автоматически стирался при вводе нового значения для нового расчета?
Калькулятор самый простенький +, -, *, /

Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
Dim x As Currency, y As Currency, z As Currency, znak As Integer
Private Sub Command11_Click()
Text1.Text = Text1.Text + ","
End Sub
Private Sub Command12_Click()
z = Text1.Text
z = z * (-1)
Text1.Text = z
End Sub
Private Sub Command13_Click()
x = Text1.Text
Text1.Text = ""
znak = 1
End Sub
Private Sub Command14_Click()
x = Text1.Text
Text1.Text = ""
znak = 2
End Sub
Private Sub Command15_Click()
x = Text1.Text
Text1.Text = ""
znak = 3
End Sub
Private Sub Command16_Click()
x = Text1.Text
Text1.Text = ""
znak = 4
End Sub
Private Sub Command17_Click()
y = Text1.Text
If znak = 1 Then z = x + y
If znak = 2 Then z = x - y
If znak = 3 Then z = x * y
If znak = 4 Then z = x / y
Text1.Text = z
End Sub
Private Sub Command18_Click()
x = 0
y = 0
z = 0
znak = 0
Text1.Text = ""
End Sub
Private Sub Command1_Click()
Text1.Text = Text1.Text + "1"
End Sub
Private Sub Command10_Click()
Text1.Text = Text1.Text + "0"
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()
Text1.Text = Text1.Text + "4"
End Sub
Private Sub Command5_Click()
Text1.Text = Text1.Text + "5"
End Sub
Private Sub Command6_Click()
Text1.Text = Text1.Text + "6"
End Sub
Private Sub Command7_Click()
Text1.Text = Text1.Text + "7"
End Sub
Private Sub Command8_Click()
Text1.Text = Text1.Text + "8"
End Sub
Private Sub Command9_Click()
Text1.Text = Text1.Text + "9"
End Sub
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
10.11.2013, 00:17
Ответы с готовыми решениями:

какая команда заполняет массив 30 случайными цифрами
какая команда заполняет массив 30 случайных цифров

какая команда служит для вычеркивания букв?
Напишите программу для вычеркивания из данного слова всех букв «р», перед которыми стоит буква «а»...

Какая команда суммы в VBA?
какая команда суммы в VBA?

Какая команда скрывает визуальный процесс выполнения макроса?
Какая команда скрывает визуальный процесс выполнения макроса?

20
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
10.11.2013, 00:38 2
Лучший ответ Сообщение было отмечено The trick как решение

Решение

1. Замени 10 цифровых кнопок массивом кнопок.
2. Установи какой-нибудь флаг для кнопки результата.
Например так:
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Option Explicit
Dim VVoD As Boolean
 
Private Sub Command17_Click()
y = Text1.Text
If znak = 1 Then z = x + y
If znak = 2 Then z = x - y
If znak = 3 Then z = x * y
If znak = 4 Then z = x / y
Text1.Text = z
VVoD = True
End Sub
 
Private Sub Комманда1_Click(Index As Integer)
If VVoD Then
    Text1.Text = Index
    VVoD = False
Else
    Text1.Text = Text1.Text & Index
End If
End Sub
1
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 8
10.11.2013, 02:14  [ТС] 3
Alex77755, Не совсем понял как объединить все цифровые кнопки массивом.

Добавлено через 5 минут
Alex77755, Хотя и так получилось. Установил флажок в код к каждой цифровой кнопке. Работает Огромное спасибо. Понял что Ваш совет - объединить цифровые кнопки в массив, был для того чтобы много не печатать.
0
Заблокирован
10.11.2013, 07:16 4
1 Попробуй скопировать кнопку на разрабатываемой форме
и сразу вылетет надпись с предложением сделать её массивом
да-нет-отмена соглашаешся (да)

2 вариант у всех компонентов есть свойство Index
по умолчанию он не задан задай его

3 вариант Load myControl програмно создаёт новый контрол на форме
будет работать если установлен индекс только координаты назнач

Добавлено через 9 минут
Пример новых кнопок

Visual Basic
1
2
3
4
5
6
7
8
Private Sub Form_Load()
    On Error Resume Next
    For f = 0 To 10
        Load Command1(f)
        'Задание координат
        Command1(f).Move Command1(f - 1).Left, Command1(f - 1).Top + _
        Command1(f - 1).Height
    Next
1
es geht mir gut
11270 / 4752 / 1183
Регистрация: 27.07.2011
Сообщений: 11,439
10.11.2013, 09:21 5
JoraVoenyjHaker,

Visual Basic
1
2
3
        Command1(f - 1).Height
        Command1(f).Visible = True
    Next
1
Заблокирован
10.11.2013, 09:55 6
а ! да извиняюсь

Добавлено через 10 минут
К чему столько сложностей с калькулятором
есть способы вызывать Win-калькулятор
программно, писать там что-то программно
и получать ответ в своей программе

Добавлено через 18 минут
100денту польза только в практическом програмировании
1
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
10.11.2013, 10:02 7
объединить цифровые кнопки в массив можно и не копируя кнопки.
В данном случае просто переименовать и расставить индексы согласно цифр.
Например начни с кнопки "0". Назови как-нибудь, например "Цифра" и поставь индекс "0"
при переименовании остальных кнопок по порядку индекс будет устанавливаться сам.
Все старые процедуры цифровых кнопок удали.
Создай новую. Уже "массивную"
1
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 8
11.11.2013, 01:24  [ТС] 8
Alex77755,
А как создать новую "массивную" процедуру для цыфровых кнопок 0-9, именно для ВСЕХ сразу? Я удалил все старые и дальше что?
Так же не совсем понятно как расставит индексы. В окне Properties?
Извиняюсь, не силен в VB
JoraVoenyjHaker,
Удалил все старые и вписал вместо них ваш код "для новых кнопок" Но как привязать то его к самим кнопкам в разрабатываемой форме?
0
Заблокирован
11.11.2013, 01:57 9
Ну так и привязывай
в обработке клавиши
знаеш что индекс можно от 0 до 255 ставить
вот и привязывай к asc коду клавиши
да как угодно можно если чуть-чуть подумать )))

Добавлено через 2 минуты
смотри
Key$="0 1 2 3 4 5 6 7 8 9 33 34 65"
j$()=split(Key)

Добавлено через 3 минуты
когда будеш создавать новый индекс
просто
Visual Basic
1
2
3
        Command1(j(f - 1)).Height
        Command1(j(f)).Visible = True
    Next
в этом случае индексом будет твоё значение из списка

или Key$="48 49 50" что по asc=соответствует 0 1 2...

событие когда ты нажал и отпустил клавишу
вот тебе поле деятельности )))
Visual Basic
1
2
3
Private Sub Command1_KeyUp(Index As Integer, KeyCode As Integer, Shift As Integer)
    
End Sub
0
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 8
11.11.2013, 01:59  [ТС] 10
JoraVoenyjHaker,
дважды кликнул на кнопку в форме "1" - открылся код формы - записал туда это:
Visual Basic
1
2
3
4
5
6
7
8
9
On Error Resume Next
    For f = 0 To 10
        Load Command1(f)
        Command1(f).Move Command1(f - 1).Left, Command1(f - 1).Top + _
        Command1(f - 1).Height
    Next
        Command1(j(f - 2)).Height
        Command1(j(f)).Visible = True
    Next
Дает ошибку.
Похоже я что-то не допонял.
Индекс ставится в окне Properties?
0
Заблокирован
11.11.2013, 02:21 11
или Key$="0 1 + -"
j$()=split(Key)
Load Command1(asc(j(f))

Добавлено через 2 минуты
так ты везде проставь
Command1(j(f))

Добавлено через 3 минуты
ты пойми там индекс не f задаёт
а элемент списка j(f) который может например 48 быть а f=0

Добавлено через 4 минуты
кстате кроме индексов
таким же макаром можно и координаты внести и размеры и всё что угодно
и код будет очень компактный только использовать данные списков

Добавлено через 2 минуты
и вот ещё что я тебе дам совет
редактируй свой код лесенкой где будет понятно кокой оператор за каким следует
и по возможности остовляй коментарий любой и тогда сам увидиш как всё станет понятным

Добавлено через 2 минуты
твой код выглядит не солидно )))

Добавлено через 2 минуты
Покажеш потом что у тебя вышло ?
мне уже интересно....
0
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 8
11.11.2013, 02:23  [ТС] 12
Цитата Сообщение от JoraVoenyjHaker Посмотреть сообщение
Покажешь потом что у тебя вышло ?
Да пока ничего. Это моя первая работа в VB =(
0
Заблокирован
11.11.2013, 04:34 13
Ну ничего опыт приходит не сразу
знал бы ты меня то в обще не поверил бы что я ещё и прогер оказываеться )))

Добавлено через 5 минут
да что я...
тут у нас есть отдельные товарищи над которыми даже я удивляюсь

Добавлено через 1 час 31 минуту
Fof f=0 to 10
next
next
такая запись недопустима

правильным будет:
внимание !
Visual Basic
1
2
3
4
5
6
открывающий оператор1
    выражение1
    открывающий оператор2
        выражение2
    закрывающий оператор2
закрывающий оператор1


удивляет что даже пользователи с высокой репутацией
не редактят текст правильно !

Добавлено через 6 минут
я почему не люблю другие языки програмирования
так это потому что в них трудно поддерживать нормальное оформление
вот как они там пишут...
Delphi
1
2
3
{start coment
// mycoment1
}
Добавлено через 10 минут
на крайняк можеш воспользоваться
исключительно моей утилитой которая сама интелектуально !
поправляет текст глянь как-нибудь
Оптимизатор текста (цветной)

Добавлено через 3 минуты
из за спешки и недостатка вдохновения я не придумал
нормального названия той поделке )))
1
Заблокирован
11.11.2013, 06:42 14
а так у меня...
Миниатюры
Калькулятор. Какая нужно команда?  
1
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
11.11.2013, 09:40 15
Load Command1(f)
У тебя уже были все кнопки в редакторе.
Можно было не грузить прогрпммно, а оставить всё как есть.
Только переименовать все цифровые кнопки и дать им ОДИНАКОВОЕ имя всем.
Начинать с "0" остальные расставятся сами. После удаления всех процедур цифровых кнопок
даблклик по любой переименнованой кнопке создаст процедуру массива кнопок.
Отличается ниаличием аргумента index.
При правильной расстановке индексов он и будет являться значением цифры.
А в случае программной загрузки надо будет ещё и программно расставлять кнопки по форме.
Как мне кажется в данном случае в этом нет необходимости.
1
Заблокирован
11.11.2013, 10:01 16
Зря я ему сразу програмную загрузку показал
теперь он совсем бидолага запутаеться
не смотря на кажущую простоту
там надо четко разбираться в массивах знать что такое asc
как вариант можеш сделать как предлогает предыдущий оратор...

Добавлено через 7 минут
ладно если никто тебе не поможет
так уж и быть, напишу тебе полу-готовый проект под названием мой-калькулятор
сделаеш своим )))

Alex77755 привет !
1
Заблокирован
11.11.2013, 10:55 17
всё сделал !
Вложения
Тип файла: zip мой-калькулятор.zip (23.5 Кб, 15 просмотров)
1
Заблокирован
11.11.2013, 11:09 18
а вот картинка
Миниатюры
Калькулятор. Какая нужно команда?  
1
Заблокирован
11.11.2013, 11:26 19
я сделал по своему
как и говорил кода получилось 3 строчки
причем размер всех кнопок строго одинаковый размеру
единственной кнопке на форме в разработке )))

Добавлено через 5 минут
если ещё три строчки дописать
то можно в раздел готовых решений отправить )))
0
11508 / 3794 / 681
Регистрация: 13.02.2009
Сообщений: 11,197
11.11.2013, 13:26 20
то можно в раздел готовых решений отправить
На какую тему?
Калькулятора-то там нет!
Полупрозрачность!
Да и то ТС может не открыть проект!
Формы-то нет нужной.
1
11.11.2013, 13:26
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
11.11.2013, 13:26
Помогаю со студенческими работами здесь

Какая команда противоположна in?
in проверяет принадлежность, какой оператор проверят не принадлежность, как-то так :D

Какая команда в delphi?
Доброго времени суток, начал думать над программой, суть в том что надо чтобы при нажатии на одном...

Какая нужна команда?
Есть 2 задания, подскажите, ответ. Нужно для учёбы. Нигде не могу найти ответ, препод не хочет...

какая команда байт перевернуть ?
там где был старший бит,чтобы оказался младший

Solaris Какая команда в Terminal-e?
Здравствуйте, уважаемые знатоки ОС Solaris. У меня к вам простейший вопрос: "С помощью какой...

Какая команда зависит от dir/
Нужно найти такую команду, работа которой изменится, если написать: "команда имя" и "команда имя/"?


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru