На нашем сайте ежедневно публикуются десятки качественных и свежих материалов, которые Вы можете скачать абсолютно бесплатно. Рекомендуем Вам добавить Наш сайт в закладки, а также подписаться на RSS ленту, чтобы не пропускать интересных новостей.
Для того, чтоб научиться писать программы на Delphi одних книг мало. Знания приходят вместе с практикой. Новичку в Delphi сложно освоиться и написать что-либо. Надо начинать с простых программ. И так, пишем калькулятор.
Часть первая: создаем и облагораживаем форму программы.
Открываем Delphi, File => New application. Видим перед собой окошки Form1 и Unit1.pas. Сейчас мы будем работать с Form1. Во-первых, уменьшаем размер формы. Нам не нужно огромное окно. Далее накидываем на нее кнопки. На это этапе необходимо как бы быть архитектором, расставлять компоненты так, чтоб и выглядело красиво, и было удобно для пользователя. Редактируем, приукрашиваем, меняем размер и стиль шрифта. В итоге получаем что-то вроде этого:
Ставим у Edit1 свойство ReadOnly=true, чтоб пользователь не тыкал туда и не писал ничего лишнего. Также щёлкаем на вкладку Win32 на палитре компонентов, ищем там XPmanifest и просто закидываем его на форму. Это нужно для того, чтоб наши кнопочки приняли красивую форму и стиль. Устанавливаем у Form1 свойство BorderStyle в bsSingle, чтоб у нашего калькулятора нельзя было менять размер, растягивая за края. Редактируем у формы свойства VertScrollBar и HorzScrollBar. Ставим им Visible=false. Так как они могут проявиться на некоторых темах виндовса. В BorderIcons убираем biMinimize и biMaximize. Получаем:
Часть вторая: пишем программный код. Зажимаем клавишу Shift и выделяем все числовые кнопки на форме. от нуля до девяти. Теперь щёлкаем на вкладку Events в инспекторе объектов, и жмем два раза на onclick. Мы получили общий обработчик события onclick. Это нужно, чтоб не писать обработчик для каждой кнопки отдельно. Теперь на надо узнать, на какую кнопку нажал пользователь. Для этого у нас есть такая полезная штука, как Sender. Прописываем локальную переменную типа byte, обзовем её btn. После begin пишем:
btn:=StrToInt((Sender as TButton).Caption);
В итоге переменная btn у нас равна значению нажатой кнопки. Проверяем значение Edit1.text. Если оно равно нулю, то стираем ноль и вписываем туда значение нажатой кнопки. Иначе приписываем справа:
Edit1.Text:=Edit1.Text+IntToStr(btn);
А теперь давайте подумаем, как будет происходить расчёт. Пользователь вводит значение, жмет на кнопку с операцией, затем вводит ещё одно значение и жмет на "равно". Так?
Создаем обработчики для операций умножения, деления, вычитания и сложения. Прописываем глобальную переменную, которая будет как бы хранить в себе выбранную операцию. Ещё одна глобальная переменная нам понадобится для хранения первого введенного значения. В обработчике для операций записываем все туда. В нем также очищаем Edit1.
Теперь пишем обработчик для кнопки "=". Проверяем, какую операцию мы выбрали. Вытаскиваем из Edit1 второе значение. Производим выбранную операцию. Не забываем про простые правила. Например, нельзя делить на ноль. Результат возвращаем в Edit1.
Допустим, если пользователь ошибся при вводе значения, необходимо дать ему возможность стирать данные из Edit1. Для этого создаем обработчик у Form1 - onkeypress. Например, стирание будет происходить при нажатии на BackSpace. Значение char этой клавиши равно - #8.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); var l: integer; begin if Key#8 then exit; l:=Length(Edit1.Text); if l>1 then Edit1.Text:=Copy(Edit1.Text,1,l-1) else Edit1.text:='0'; end;
Для корректной работы необходимо поставить у Form1 свойство KeyPreview в true.