Калькулятор как в 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 (вверху или справа на панеле).

Delphi MainMenu

Кликнем на него два раза мышкой и заполним следующим образом:

Delphi 7 Создание главного меню для калькулятора. Вкладка Файл

Delphi 7 Создание главного меню для калькулятора. Вкладка Справка

Чтобы подчеркнуть букву в названии определенного пункта меню, необходимо перед ней поставить знак &. (Например, "&Справка").

Далее переходим на создание объектов при помощи программного кода (жмем 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

  1. При изучении темы «Алгоритмизация и программирование» я использую систему программирования Delphi, так как считаю, что язык программирования Паскаль наиболее пригоден для использования в учебном процессе. Использование визуальной объектно-ориентированной системы позволяет знакомить учащихся с современными методами создания программ и создает положительную мотивацию в изучении информатики, так как учащиеся создают реально работающие и полезные программы, например калькуляторы, музыкальные и видео - проигрыватели и др.
  2. Проектная форма организации работы позволяет увлечь учащихся индивидуальной и коллективной работой над проектами. В проектной деятельности важно самовыражение автора, его личное творчество. Так же при использовании проектов активизируется поисковая активность учащихся и реализуется потребность в свободе: перемещение по классу; возможность выбора темпа изучения, уровня сложности материала, самого способа решения.
  3. В ходе выполнения проекта используется проблемный подход: по мере появления вопросов у учащихся «Как реализовать данную функцию?» изучаются соответствующие темы. При работе над проектом «Стандартный калькулятор» рассматриваются следующие темы: «Ветвление», «Множественный выбор», «Циклы»
  4. Данный проект предлагается учащимся после изучения тем «Основы объектно-ориентированного программирования», «Основы визуального проектирования и программирования в среде 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)

  1. Ввести число в поле Edit1. При этом в поле Edit1 число будет представлено как текстовая строка.
  2. Нажать кнопку «+». В процедуре обработки этой кнопки необходимо выполнить следующие действия:
    • преобразовать эту строку в число с помощью функции StrToFloat;
    • сохранить это число в переменной X;
    • сохранить в переменной, например, kod код этой операции;
    • очистить поле Edit1.
  3. Ввести второе число в поле Edit1.
  4. Нажать кнопку «=».В процедуре обработки этой кнопки необходимо выполнить следующие действия:
    • преобразовать эту строку в число с помощью функции 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 проверку на ввод НЕцифр? Заранее спасибо.

так как на картинке нет

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

сможешь за меня написать калькулятор на этом коде только как я просил ? Programmer ABC, положите на форму эдит, уберите у него обрамление, над эдитом разместите лэйбл, фон этих компонентов сделайте таким же, как у самой формы, после чего нарисуйте рамку (шэйп на заднем плане с заполнением цвета формы или Bevel) - и все, собственно. Сможете добавить кнопку +/- и ещё пожалуйста уберите скобки а так же верхнюю панель хорошо ? Это Вы мне задание даете, что ли? А вот оно мне надо?
Вы спросили, как сделать оформление, аналогичное приведенному на скрине, я Вам ответил, как это можно сделать, а дальше дело Ваше: что хотите добавляйте, что хотите убирайте. сможете помочь исправьте ошибку что выдает пожалуйста Переделайте пожалуйста калькулятор который написан у меня на 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 и

Свойства формы в окне Инспектора Объектов biMaximize установим значения false, запретив тем самым сворачивать окно до пиктограммы и разворачивать его на весь экран

Рис. 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»>.

Свойства (а) и события (б) сКнопки «5»> в Инспекторе Объектов

Рис. 4.30. Свойства (а) и события (б) сКнопки «5»> в Инспекторе Объектов

Заметим, что алгоритмы обработки событий строятся на использовании объекта Ope_Result спроектированного ранее класса TOperation, поэтому необходимо обеспечить размещение объекта в памяти и освобождение памяти при завершении работы приложения.

События формы в Инспекторе Объектов

Для этих целей удобно использовать события формы OnCreate (создание формы) и OnClose (закрытие формы) (рис. 4.31). Опишем обработчики событий следующим образом;



Рис. 4.31. События формы в Инспекторе Объектов


На этом разработку учебного приложения «Калькулятор» можно считать завершенной. Средой Delphi сгенерирован текст основной программы и построен модуль calcUnit, содержащий описание класса TOperation и интерфейсной формы Forml:

Читайте также: