Калькулятор как в windows delphi
Обновлено: 04.07.2024
Создадим универсальный калькулятор на Delphi, который будет считать множество функций.
Приступим..
Для начала нам нужен 1 Edit..сразу-же очищаем его Text, на событие OnKeyPress пишем следующий код:
Дабы обезопаситься от ввода типа:"0,1,2,33" на событие OnChange пишем следующий код
Дабы полностью обезопаситься от некорректного ввода, ставим
DragMode: dmAutomatic ;
После того как у нас получилось неуязвимое поле, пришло время для создания кнопок калькулятора, сначала
создадим 16 кнопок (Button): Числа от 0 до 9-ти, кнопку для запятой, знака равно, знаков плюс, минус,
умножить и поделить.
Сперва стоит обеспечить ввод чисел, для этого на событие OnClick чисел от 0..9 и запятой пишем следующее:
Повторим процедуру для всех остальных чисел и знака запятой..На событие OnClick числа "0" стоит дописать ещё одну строку:
Дальше нам нужно запоминать числа которые подаются на ввод и выводить их, создадим три глобальные переменные и одну переменную типа char для запоминания математических действий:
Сначала нам нужно считать первое число, на знаки "+","-","*","/" пишем следующий код:
Стоить повторить и для остальных действий..
Далее нам нужно считать вторую переменную, по этому на событие OnClick знака равно, пишем:
Вуаля, у нас получился простейший калькулятор, но я ведь обещал вам совсем другой, по-этому создадим дополнительно 24 кнопки (Button) для разных функций;
Одну из этих кнопок называем:"Pi", на событие OnClick этой кнопки пишем:
Далее переименовываем Button`ы на "cos","sin","arctg", на событие OnClick пишем:
Проделать тоже самое с остальными функциями..
Дальше переименовываем две кнопки для вычисления sqr и sqrt..пишем:
Повторить и для "sqr"
Вы наверное спросите, а как-же насчёт ввода отрицательных чисел?
Для этого переименовываем ещё одну кнопку в "+/-"
На событие OnClick пишем:
Далее вернемся немного назад и напишем ещё пару функций для действий с двумя числами. в событии OnClick знака равно, введем две локальные переменные, например: q и w;
Теперь переименуем 6 кнопок в "mod","div","or","xor","and","x^y";
Что писать на событие OnClick этих кнопок можно прочесть выше
Теперь пришло считать второе число и вывести результат..О том как это сделать, написано выше.
В итоге текст на событии OnClick знака равно будет иметь такой вид:
Далее переименуем кнопку в "х!", на событие OnClick пишем:
Переименуем ещё две кнопки в "x^2" и "x^3" на событие OnClick кнопки "x^2" пишем:
Для кнопки "x^3" - аналогично.
Переименуем ещё одну кнопку в exp (Експонента), на OnClick Этой кнопки пишем:
Переименуем следующую кнопку в "Int" (Возвращение целой части), пишем:
Следующая кнопка "not" (Возвращение противоположного числа + (-1) ).Пишем:
Следующей будет кнопка "ln". Пишем:
Следующая кнопка "1/х". Пишем аналогично предыдущему.
Следующая - кнопка Backspace. Пишем:
В этой статье мы подробно рассмотрим создание простого стандартного калькулятора с помощью среды разработки Borland Delphi 7. Основные объекты калькулятора будем создавать программным способом.
Итак, меняем свойства главного окна (в окошке слева Object Inspector) Form1, в соответствии со следующей таблицей (остальные поля не трогаем):
Свойства Form1 | Значение |
Caption | Калькулятор |
AutoScroll | false |
BorderIcons | [biSystemMenu, biMinimize] |
BorderStyle | bsSingle |
Position | poScreenCenter |
Height | 292 |
Width | 286 |
Добавим на форму объект MainMenu (вверху или справа на панеле).
Кликнем на него два раза мышкой и заполним следующим образом:
Чтобы подчеркнуть букву в названии определенного пункта меню, необходимо перед ней поставить знак &. (Например, "&Справка").
Далее переходим на создание объектов при помощи программного кода (жмем F12).
Попробуем сначала добавить текстовое поле, где будут выводиться все цифры и вычисления калькулятора (все, что записано ниже после слова "Например" - пишем в Delphi).
Для создания объекта программным способом, выполним следующие действия:
1. В uses пропишем модуль объектов.
Например: StdCtrls
2. Перед строкой implementation и после ключевого слова var создадим новую переменную, а в качестве типа переменной укажем класс объекта (класс объекта всегда начинается с буквы "Т" - вероятно, произошло от названия программы Turbo Pascal).
Например:
Edit: TMemo;
Button: array[0..22] of TButton;
3. В событии (например, при создании формы) сначала создаем новый объект (Edit:=TMemo.Create(form1);), затем отображаем его на Form1 (Edit.Parent:=form1;). А дальше, как и для обычного объекта, указываем его свойства (координаты, размеры и т.п.).
Например:
Свойство Alignment выравнивает текст в крайнее правое положение.
Таким же образом создадим на форме кнопки. Но создавать их не будем по-отдельности. Создадим массив кнопок, который и выведем в определенном порядке на форму. У нас будет несколько групп кнопок (для ввода цифр и для вычислений). Так как у нас используется массив, соответственно каждый объект необходимо смещать таким образом, чтобы не получилось так, что один объект лежит на другом. Так не должно быть! Поэтому обязательно используйте свойства Top и Left для расположения объекта на форме Form1 в определенных координатах. Чтобы проще было программировать, мы создали массив кнопок от 0 до 9 с соответствующими им кнопками.
Должно получиться что-то вроде этого:
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ComCtrls;
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;
var
Form1: TForm1;
Edit: TMemo;
Button: array[0..22] of TButton;
Затем, по-желанию, добавим на форму объект StatusBar (с вкладки Win32). В свойстве Panels откроем новое окно, создадим новую панель и назовем ее "Copyright @ 2013 FORTRAN NEW Company" (можно назвать по-своему).
Цель проекта: разработать программу «Стандартный калькулятор», практическое знакомство со способами создания программ на Delphi, изучение тем «Ветвление» и «Циклы» в процессе написания программы.
Количество часов на выполнение проекта: 5
- При изучении темы «Алгоритмизация и программирование» я использую систему программирования Delphi, так как считаю, что язык программирования Паскаль наиболее пригоден для использования в учебном процессе. Использование визуальной объектно-ориентированной системы позволяет знакомить учащихся с современными методами создания программ и создает положительную мотивацию в изучении информатики, так как учащиеся создают реально работающие и полезные программы, например калькуляторы, музыкальные и видео - проигрыватели и др.
- Проектная форма организации работы позволяет увлечь учащихся индивидуальной и коллективной работой над проектами. В проектной деятельности важно самовыражение автора, его личное творчество. Так же при использовании проектов активизируется поисковая активность учащихся и реализуется потребность в свободе: перемещение по классу; возможность выбора темпа изучения, уровня сложности материала, самого способа решения.
- В ходе выполнения проекта используется проблемный подход: по мере появления вопросов у учащихся «Как реализовать данную функцию?» изучаются соответствующие темы. При работе над проектом «Стандартный калькулятор» рассматриваются следующие темы: «Ветвление», «Множественный выбор», «Циклы»
- Данный проект предлагается учащимся после изучения тем «Основы объектно-ориентированного программирования», «Основы визуального проектирования и программирования в среде Delphi», «Описание констант и переменных», «Арифметические операции и функции»
1 урок «Разработка интерфейса программы»
Задание. Разработать интерфейс программы «Стандартный калькулятор»
![]() | MainMenu – создание меню программы Label – надпись Edit – поле для ввода и вывода |
![]() | BitBtn – кнопка (настраивается цвет надписи на кнопке в отличие от Button) Image – вставка изображения |
Разработка интерфейса.
1. Создать форму.
Свойства формы.
Name: kalkul
Caption: Калькулятор
Color: цвет по желанию
BorderIcons: biMaximize – False, остальное True.
2. Разместить на форме объект Edit. Свойства: Name : Edit1, Text – пустая строка.
3. Разместить на форме соответствующее число кнопок.
– цифры от 0 до 9,
– знаки арифметических операций,
– знак «=»
– знаки функций (корень, синус, косинус и т.д.)
Объект – кнопка BitBtn.
Свойства:
Name – можно оставить по умолчанию
Caption – соответствующее выполняемой функции название
Font – шрифт и цвет шрифта по желанию
4. Поместить на форму изображение (если нужно), настроить цвет формы, шрифт, сделать соответствующие надписи на форме (если нужно).
Примерный вид интерфейса программы
Домашнее задание. Повторить темы: «Описание констант и переменных», «Арифметические операции и функции» по конспекту учащегося. См. Приложение 1 и Приложение 2.
2 урок «Написание процедур выполнения арифметических операций»
I. Написать процедуры ввода чисел. Для этого щелкнуть два раза по кнопке «1» (объект BitBtn1) и ввести следующий код:
Аналогично написать процедуры ввода остальных цифр и символа «,»
II. Создать процедуру очистки поля Edit1, кнопка «С» (объект BitBtn22)
- Ввести число в поле Edit1. При этом в поле Edit1 число будет представлено как текстовая строка.
- Нажать кнопку «+». В процедуре обработки этой кнопки необходимо выполнить следующие действия:
- преобразовать эту строку в число с помощью функции StrToFloat;
- сохранить это число в переменной X;
- сохранить в переменной, например, kod код этой операции;
- очистить поле Edit1.
- Ввести второе число в поле Edit1.
- Нажать кнопку «=».В процедуре обработки этой кнопки необходимо выполнить следующие действия:
- преобразовать эту строку в число с помощью функции StrToFloat;
- сохранить это число в переменной Y;
- в зависимости от кода операции, сохраненной в переменной kod, выполнить арифметическую операцию, например, z:=x+y;
- преобразовать число, находящееся в переменной Z, в текст с помощью функции FloatToStr и вывести в поле Edit1.
IV. Что необходимо для реализации этого алгоритма?
1. Описать переменные X, Y, Z, kod. Описывать переменные будем в основной программе, модуле Unit, чтобы переменные могли действовать в любой процедуре (глобальные переменные).
2. Создать процедуры обработки нажатий кнопок «+», «–», «/», «*»
procedure TForm1.BitBtn17Click(Sender: TObject);
begin
x:= strtofloat(edit1.text);
kod := ‘+’;
edit1.Clear;
end;
Но что будет, если мы в поле Edit1 ничего не введем и нажмем кнопку «+»? Возникнет ошибка и программа завершится. Чтобы избежать этого надо проверить имеется ли в поле Edit1символы? И в зависимости от этого условия продолжить выполнять процедуру или вернуться к вводу данных. Следовательно, мы должны использовать алгоритмическую структуру «Ветвление».
Изучить с учащимися правила записи ветвления на языке Delphi.
Изменненая процедура обработки нажатия кнопки «+»
procedureTForm1.BitBtn17Click(Sender: TObject);
begin
ifedit1.Text<>'' thenx:=strtofloat(edit1.text);
kod := ‘+’;
edit1.Clear;
end;
Аналогично создатьпроцедуры обработки нажатий кнопок «–», «/», «*»
3. Создать процедуру обработки нажатия кнопки «=». В этой процедуре необходимо в зависимости от значения переменной kod выполнять четыре разных операции. Такая структура называется «Множественное ветвление» или «Выбор».
Изучить с учащимися правила записи структуры «Выбор» на языке Delphi.
procedure TForm1.BitBtn19Click(Sender: TObject); кнопка «=»
begin
if edit1.Text<>'' then y:=strtofloat(edit1.text); впеременную y кладем edit1.text
case kod of
'+': z:=x+y;
'-': z:=x-y
'*': z:=x*y;
'/': z:=x/y
end ;
edit1.Text:=floattostr(z) вывод в поле Edit1 значение переменной z
end;
3 урок «Написание процедур вычисления основных функций»
I. Создать процедуры вычисления функции «X в степени Y». Для этого необходимо:
1. Изучить тему «Циклы на языке Delphi».
2. Создать процедуру обработки нажатия кнопки «X в степени Y».
procedure TForm1.BitBtn24Click(Sender: TObject);
begin
x:= strtofloat(edit1.text);
kod := ‘^’;
edit1.Clear;
end;
3. Добавить в процедуру нажатия кнопки «=» следующий код
II. Создать процедуры вычисления остальных функций. При вычислении тригонометрических функций учесть, что компьютер работает с радианной мерой углов.
Например, процедура вычисления квадратного корня
Процедура вычисления функции sin
4–5 урок. «Написание процедур работы с меню и усовершенствование калькулятора»
У любой программы имеется система меню, которая позволяет выполнять разные сервисные функции. Создадим для нашего калькулятора меню, которое будет состоять, например, из следующий пунктов: «Файл», «Правка», «Справка». Для этого: поместить на форму объект MainMenu (в любое место формы, этот объект будет невидим при выполнении)
- Два раза щелкнуть левой кнопкой мыши по этому объекту на форме.
- Выделить в появившейся форме пунктирное поле и в инспекторе объектов в свойство Caption ввести «Файл».
- Аналогично создать пункты меню «Правка» и «О программе».
- В меню «Файл» создать пункт «Выход», а в «Правка» - пункты «Копировать» и «Вставить».
- Закрыть форму создания меню.
Создание меню
Для создания справки создадим еще одну форму с именем Form2, на которой можно разместить справочные сведения и информацию об авторах программы. Для размещения текста можно воспользоваться объектом Memo, который представляет из себя почти готовый текстовый редактор, и объектом Image для размещения графики и фотографий. Для открытия формы воспользуемся командой Form2.ShowModal.
Процедура открытия формы «Справка»
procedure TForm1.N8Click(Sender: TObject);
begin
Form2.ShowModal Открытие формы «Справка»
end;
Усовершенствование калькулятора
Заключение. На уроках информатики проектная форма организации работы позволяет раскрыть творческий потенциал учащихся, активизирует исследовательскую работу и позволяет выбрать индивидуальный темп и сложность выполнения работы.
Кроме проекта «Стандартный калькулятор» я использую и другие работы, например «Вычисление площади фигуры методом Монте-Карло» (см. Приложение 4), «Нахождение корней уравнения методом половинного деления (см. Приложение 5), «Расчет электрических цепей (см. Приложение 6) и другие.
Оформление как в калькуляторе Windows
мальчишки, помогите даме с калькулятором. Сказали сделать копию калькулятора как в Windows 7 в.
Как сделать выбор операции в калькуляторе?
я первый день учусь в c++ мне понравилось но у всех всегда трудности я не понимаю как сделать выбор.
Как сделать раскрывающийся календарь в окне TEdit?
Подскажите, можно ли, и как сделать раскрывающийся календарь в окне TEdit? Т.е. есть окошко Edit.
Как сделать в TEdit'e проверку на ввод НЕцифр?
Здравствуйте! Подскажите пожалуйста, как сделать в TEdit'e проверку на ввод НЕцифр? Заранее спасибо.
так как на картинке нет
по крайней мере тому кто пытается сделать калькулятор первый раз
делай стандартными контролами и не выеживайся))) красоту наводить будешь через пару лет когда научишься))))
Вы спросили, как сделать оформление, аналогичное приведенному на скрине, я Вам ответил, как это можно сделать, а дальше дело Ваше: что хотите добавляйте, что хотите убирайте. сможете помочь исправьте ошибку что выдает пожалуйста Переделайте пожалуйста калькулятор который написан у меня на Visual Studio в Delphi ?
Калькулятор.rar
Programmer ABC, учите Delphi и переписывайте код.
Добавлено через 2 минуты
Помогают тому, кто старается что-то сделать сам, а не просто создаёт темы со своими заданиями.
Ну напишите же кто-нибудь для Programmer ABC хоть какую-нибудь программу, чтобы он смог выдать её за свою на зачёте! :)
Помощь в написании контрольных, курсовых и дипломных работ здесь.
Как сделать Drag-and-Drop на калькуляторе в Си шарпе
Помогите сделать Drag-and-Drop на калькуляторе в Си шарпе чтобы можно было перетаскивать цифры в.
Вернемся к задаче разработки приложения Калькулятор. Теперь необходимо разработать форму, которая будет являться окном приложения в среде графического интерфейса ОС Windows.
Создание формы. Пусть на форме необходимо разместить следующие компоненты:
- • окно для ввода значений аргументов и вывода результата;
- • кнопки-цифры для формирования числа в окне при вводе значений аргументов;
- • кнопки-знаки арифметических операций;
- • кнопку «точка» для формирования вещественного числа с дробной частью;
- • кнопку «равно» для получения конечного результата;
- • кнопку удаления последнего введенного знака;
- • кнопку очистки окна ввода значений аргументов и вывода результата.
Предлагаемый внешний вид формы представлен на рис. 4.27.
При создании формы окна приложения определяется тип класса новой формы (в нашем примере это класс TForml), кото-
Рис. 4.27. Окно программы Калькулятор
рый наследует свойства и методы класса TForm и автоматически размещается объект Forml. Исправим некоторые значения свойств в инспекторе объектов для формы Forml (рис. 4.28): • изменим свойство Caption — текст заголовка окна формы, задав значение Пример-калькулятор; • исключим из системного меню окна возможности изменять внешний вид окна: для свойств biMinimize и
Рис. 4.28. Свойства формы в окне Инспектора Объектов biMaximize установим значения false, запретив тем самым сворачивать окно до пиктограммы и разворачивать его на весь экран.
Окно для ввода значений аргументов и вывода результата представляет собой компонент класса Tmemo. Разместим компонент на области формы и изменим его свойства (рис. 4.29):
• установим в свойстве Name (имя объекта) значение
- • зададим свойству Align (размещение на форме) значение alTop, т. е. тем самым разместим компонент в верхней части формы и сделаем равным по ширине горизонтальному размеру формы;
- • установим в свойстве Alignment значение taRight- Justify, т. е. зададим принцип выравнивания введенного в окно значения по правой границе окна;
- • установим в свойстве Readonly значение true, запретив ввод значений в окно с клавиатуры.
Рис. 4.29. Свойства окна ввода в Инспекторе Объектов
Следующий шаг разработки формы — размещение кнопок. Все кнопки представляются объектами, принадлежащими классу TSpeedButton. Для каждого объекта кнопки установим следующие свойства:
• Name (имя объекта): sb_0, sb_1. sb_9 — для кнопок-цифр; SB_point — для кнопки «точка»; SB_plus, SB_min, SB_dev, SB_mul, SB_eq — для знаков операций и «равно»; SB_del — для кнопки удаления знака; SB_clear — для кнопки очистки значения компоненты ArgMemo;
• Caption — текст на кнопке — символ цифры, точки, знака операции, 'С и 'Del'.
Каждый из будет служить источником событий, обработка которых и будет поддерживать процесс вычисления с помощью разрабатываемого калькулятора:
- • при нажатии на необходимо добавить к формируемому числу справа цифру, указанную на кнопке;
- • при нажатии на необходимо добавить к формируемому числу справа точку, предварительно убедившись, что такого знака еще нет в формируемом числе;
- • при нажатии на необходимо выполнить предыдущую операцию (в случае вычисления выражения типа А+в-с), отобразить ее результат и установить знак очередной операции;
- • при нажатии на необходимо вычислить и отобразить результат;
- • при нажатии на ( ) необходимо удалить из формируемого числа последний знак;
- • при нажатии на ( 1 >) необходимо очистить текстовое значение объекта АгдМешо.
Приведем описание процедур обработки событий.
Событие OnClick для вызывает выполнение процедуры TForml. SB_DigitClick:
Процедура обработки события для (TForml. SB_PointClick) отличается от процедуры SB_Digit- Click тем, что, во-первых, обеспечивает ввод двух знаков ('О' и ' . ') в случае, если начинается ввод нового числа, и, во-вторых, запрещает ввод второй точки в изображение числа с десятичной дробью:
Описанный алгоритм реализуется процедурой TForml.SB - OperClick:
Процедура обработки события OnClick для разрешает выполнение операции только в случае, если поле Орег не пусто, инициализирует объект Ope_Result и устанавливает флаг ввода операции:
Для поддержки событий нажатия на кнопки и
опишем процедуры TForml. SB_delClick:
И TForml.SB_ClearClick:
На рис. 4.30 представлено окно Инспектора объектов для компоненты сКнопка «5»>.
Рис. 4.30. Свойства (а) и события (б) сКнопки «5»> в Инспекторе Объектов
Заметим, что алгоритмы обработки событий строятся на использовании объекта Ope_Result спроектированного ранее класса TOperation, поэтому необходимо обеспечить размещение объекта в памяти и освобождение памяти при завершении работы приложения.
Для этих целей удобно использовать события формы OnCreate (создание формы) и OnClose (закрытие формы) (рис. 4.31). Опишем обработчики событий следующим образом;
Рис. 4.31. События формы в Инспекторе Объектов
На этом разработку учебного приложения «Калькулятор» можно считать завершенной. Средой Delphi сгенерирован текст основной программы и построен модуль calcUnit, содержащий описание класса TOperation и интерфейсной формы Forml:
Читайте также: