Калькулятор на VB - это легко!

Калькулятор на VB - это легко!

Файл : ref-17966.doc (размер : 101,376 байт)

Калькулятор на VB - это легко!

(автор: Есин И. В., email: tofriend@list.ru)

О чём ...

Статья имеет две редакции: для начинающих осваивать язык и для тех у кого не только аббревиатура VB не вызывает вопросов, но и более-менее владеющих им.

В данной редакции от читателя требуется знание VB на достаточно хорошем уровне, что означает владение навыками визуального программирования, событийно-управляемого программирования и конечно «основных» операторов языка. Предлагается один из способов поиска решения подобных задач.

Первый шаг или интерфейс пользователя

Здесь особо ничего фантазировать не надо, а просто вспомнить, как выглядит обычный калькулятор, какие кнопки у него и каково их назначение. У меня получилось так:

Инструмент CommandButton содержит такие интересующие нас свойство и событие, которые дают нам полную ясность его выбора. Аналогичное можно сказать и про инструмент Label. Декоративный инструмент Line необязателен.

Для понимания моего программного кода вам надо будет согласиться со следующими именами представленных объектов и их свойствами:

Форме присвоим имя Calculator.

Кнопки с цифрами образуют массив кнопок Knopki индексы, которых совпадают с их надписями.

Кнопка точка - это объект с именем Tochka, a кнопка изменения знака числа [+/-] - Plusmin.

Кнопки арифметических операций имеют общее имя Operacia, но проиндексированы. Причём кнопка с надписью + имеет индекс 4, кнопка со знаком минус - индекс 2, кнопка "разделить" - 0, а кнопка соответствующая умножению - 5.

Кнопка "сброс" [С] - Sbros.

Кнопка "очистить" [CE] - Ochistka.

Кнопка "удалить" [<-] Udalit.

Кнопка "равно" [=] - Ravno.

Единственная метка называется Tablo (и далее - индикатор отображения вычислений будем называть "табло").

В соответствие с рисунком измените свойство Caption всех объектов. Так, например, для объекта Tablo его значением будет 0.и свойство Font: FontSize = 14. Для всех кнопок свойство Style имеет значение 1-Graphical. Свойство TabStop всех объектов – False.

Свойство формы KeyPreview обязано иметь значение True. Ведь надо же пользователю предоставить возможность вычислять с клавиатуры!

А BorderStyle -1-FixedSingle.

Немалая часть проекта уже завершена ... Продолжим работу!

Второй шаг или "как заставить эту штуковину работать?!!"

Прежде чем писать обработчики событий для данных элементов управления "возьмём в руки" обычный калькулятор и выясним "механизм" его работы. И сразу же можем сказать, что у него три состояния: включён, выключен и первоначальная готовность. Все эти состояния считайте уже написаны (они обеспечиваются открытием и закрытием окна приложения и значением свойства Caption метки Tablo)!

Далее, выясним какие действия может осуществлять пользователь над кнопками нашей вещицы и что же при этом происходит на табло?

а) Нажатие на одну из цифр - на табло справа к уже имеющемуся числу прибавляется нажатая цифра. Однако если данное число ноль, его заменяет введённая цифра.

б) Нажатие точки - изменений на табло нет.

в) Нажатие плюс/минус - на табло слева к уже имеющемуся числу прибавляется минус или убирается.

г) Выбор одной из арифметических операций - возможное вычисление значения предыдущей операции с отображением его на табло.

д) Вычислить (кнопка равно) - на табло может отобразиться результат заданной операции.

е) Удаление "последней" цифры числа - на табло удаляется "последняя" цифра.

ж) Очистить (кнопка CE) - на табло "исчезает" набранное число и "превращается" в ноль!

з) Сброс - на табло ноль.

А связаны ли как-то между собой эти действия или с какими-нибудь состояниями? И ... когда возможно данное действие, а когда нет? Ответим в той же последовательности.

а) Если была нажата точка, то набирается дробное число. Очевидно, мы не можем ввести число, которое не умещается в табло. И нам надо учитывать, что число не обязано быть целым (то есть не всегда число оканчивается точкой).

б) Нет согласованных действий. Нельзя поставить точку, если число уже дробное.

в) Нет согласованных действий. Действие можно выполнить всегда!

г) Вычисление значения заданной операции. Действие можно выполнить всегда.