На главную

Библиотека Интернет Индустрии I2R.ru

Rambler's Top100

Малобюджетные сайты...

Продвижение веб-сайта...

Контент и авторское право...

Забобрить эту страницу! Забобрить! Блог Библиотека Сайтостроительства на toodoo
  Поиск:   
Рассылки для занятых...»
I2R » И2Р Программы » Программирование » Delphi и Pascal

Программирование в Delphi. Примеры работы с компонентами VCL Delphi

Итак, настало время творчески подойти к тем возможностям, которые предоставляют компоненты VCL Delphi. В предыдущей статье мы кратко рассмотрели компоненты, расположенные на закладках Standard и Additional. Применим полученные знания на практике.

Многие начинающие программисты, которые знакомятся с новым для них визуальным языком программирования, начинают с создания программы "Калькулятор". Попробуем и мы создать калькулятор, используя компоненты, находящиеся на закладках Standard и Additional.

Для начала запустим Delphi. Готово? Теперь подпишем нашу форму (Form1) заголовком "Калькулятор". Для этого нужно в поле Caption инспектора объектов вписать слово Калькулятор. Во время того, как вы будете вписывать слово, оно автоматически будет прописываться в заголовок формы вместо надписи Form1. Теперь нам нужно добавить на форму поле, в которое будет выводиться результат. Для этого очень подходит компонент Edit (поле для ввода) который находится на закладке Standard. Добавим его на форму. Теперь установим его свойства в инспекторе объектов. Свойству Text присвоим значение 0 (именно это свойство содержит текст, находящийся в поле для ввода). Кроме того, свойству ReadOnly (только чтение) присвоим значение true (истина). Это необходимо для того, чтобы во время работы нашей программы пользователь не мог вводить символы напрямую, без помощи кнопок, в это поле. Теперь добавим на форму две кнопки Button1 и Button2 из закладки Standard панели компонентов. Свойству Caption первой кнопки присвоим значение "Сброс" а второй "Выход". Первая кнопка будет сбрасывать результат вычислений, а вторая позволит выйти из программы. Теперь нужно добавить еще несколько кнопок для ввода чисел и арифметических действий. Для этого очень хорошо подойдут кнопки быстрого доступа SpeedButton. Вы найдете этот компонент на закладке Additional панели компонентов. Расположим четыре ряда по шесть кнопок на форме. В результате должно получиться что-то похожее на нижеприведенный рисунок:

01.gif

Теперь последовательно присвоим свойству Caption для каждой кнопки значения: 0,1,2,3,4:, а также арифметические операции и операции работы с памятью:

02.gif

Поясню, что кнопки работы с памятью позволяют запомнить любое число, а затем выдать его. Названия кнопок соответствуют следующим действиям:
СП - стереть память;
ИП - выдать значение из памяти;
П- - поместить число в память со знаком минус и сложить его с содержимым памяти;
П+ - поместить число в память и сложить его с содержимым памяти.

Конечно, вы можете расположить кнопки так, как это вам больше нравится. В конце концов, кто создает свое приложение вы или я?

Теперь осталось самое главное - написание кода. Да, несмотря на все ваши знания компонентов и дизайнерские способности, придется немного потрудиться над созданием кода. Давайте начнем с простого: напишем код для кнопок Сброс и Выход. Мы уже умеем писать программу обработчик для события "нажатие на кнопку". Дважды щелкнем по кнопке Сброс (или щелкнем на ней один раз, затем перейдем в окно инспектора объектов, выберем закладку Events (события) и дважды щелкнем напротив надписи OnClick). Теперь напишем код обнуления:

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:='0';
end;

Таким образом, при нажатии на кнопку, в поле для ввода Edit1 будет записано значение 0.

Для кнопки Выход напишем следующий код:

procedure TForm1.Button2Click(Sender: TObject);
begin
Form1.Close;
end;

При нажатии на эту кнопку, форма Form1 закроется. Можете теперь запустить вашу программу при помощи клавиши <F9>, либо с помощью команды главного меню Delphi Run/Run (Запуск/Запуск). Наша программа успешно работает, но реагирует пока только на кнопки Сброс и Выход. Теперь запишем обработчики события нажатия кнопки для всех остальных кнопок.

Для кнопки 9:

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if Edit1.Text<>'0' then
  Edit1.Text:=Edit1.Text+'9'
else
  Edit1.Text:='9';
end;

Поясню вышеприведенный код. Сначала мы проверяем, значение, находящееся в поле для ввода. Если оно равно нулю, то мы должны просто вписать в поле нужную цифру вместо нуля. Если же там не ноль, то мы должны приписать эту цифру справа от уже имеющегося числа.

Для остальных цифровых кнопок (кроме кнопки 0) напишем такой же код, как и для кнопки 9, за исключением того, что вместо числа 9 везде поставим число, соответствующее названию кнопки, например для кнопки 1:

procedure TForm1.SpeedButton3Click(Sender: TObject);
begin
if Edit1.Text<>'0' then
  Edit1.Text:=Edit1.Text+'1'
else
  Edit1.Text:='1';
end;

Теперь напишем код для кнопки 0:

procedure TForm1.SpeedButton19Click(Sender: TObject);
begin
if Edit1.Text<>'0' then
  Edit1.Text:=Edit1.Text+'0'
end;

Здесь мы ничего не пишем, если в поле для ввода стоит ноль, и приписываем ноль справа, если значение поля для ввода не равно нулю.

Запустите программу (<F9>) и попробуйте понажимать цифровые кнопки. Все прекрасно работает!

Теперь можно смело утверждать, что самое легкое позади. С арифметическими операциями, а уж тем более с памятью будет посложнее. Здесь уже не обойтись без вспомогательных переменных. Я думаю, что читатель знаком с языком Pascal, т.к. дальнейшее повествование будет рассчитано на людей, знающих Паскаль хотя бы на начальном уровне.

Поставим перед собой цель пока научиться работать с целыми числами. Попробуем реализовать операцию сложения двух чисел. Итак, вводить какое-либо значение в поле для ввода мы уже можем. Теперь нужно по кнопке + запоминать первое число в какой-либо переменной, а по кнопке = выводить результат сложения в поле для ввода. На первый взгляд довольно простая задача. Но посмотрим:

Добавим переменную a в раздел описания переменных модуля Unit1 (это в самом начале модуля, в разделе interface):

var
  Form1: TForm1;
  a: integer;

Пусть она пока будет целой (integer). Теперь нужно при нажатии кнопки + запомнить число, находящееся в поле для ввода в переменную a и обнулить поле для ввода (пойдем простым путем):

procedure TForm1.SpeedButton22Click(Sender: TObject);
begin
a:=StrToInt(Edit1.Text);
Edit1.Text:='0';
end;

Функция StrToInt преобразует строковое значение (тип string) в целое (тип integer). Обратная функция (преобразующая целое значение в строковое) - это функция IntToStr. Теперь, при нажатии на кнопку =, осталось сложить введенное число с запомненным ранее в переменной a:

procedure TForm1.SpeedButton23Click(Sender: TObject);
begin
Edit1.Text:=IntToStr(StrToInt(Edit1.Text)+a);
end;

Таким образом, мы преобразуем строку в число, складываем с переменной a, преобразуем число в строку и помещаем результат в поле для ввода.

Ради интереса можно посмотреть, какой размер имеет наша программа. Она занимает всего 319 Кбайт в .exe файле! Конечно, это не 96 Кбайт стандартного калькулятора Windows, но все-таки:

Конечно, вышеприведенный код не лишен недостатков. Опытные разработчики сразу увидят многие изъяны. Но мы, при создании кода не планировали охватить все хитрости программирования. Код служит лишь для иллюстрации возможностей, предоставляемых средой Delphi. Желающие написать программу "Калькулятор" на Delphi могут с успехом довести дело до конца. Надеюсь, эта статья показала некоторые возможности стандартных компонентов Delphi. Дальнейшие статьи научат вас использовать другие, более мощные возможности Delphi.

Вячеслав Понамарев
Софтерра

Другие разделы
C, C++
Java
PHP
VBasic, VBS
Delphi и Pascal
Новое в разделе
Базы данных
Общие вопросы
Теория программирования и алгоритмы
JavaScript и DHTML
Perl
Python
Active Server Pages
Программирование под Windows
I2R-Журналы
I2R Business
I2R Web Creation
I2R Computer
рассылки библиотеки +
И2Р Программы
Всё о Windows
Программирование
Софт
Мир Linux
Галерея Попова
Каталог I2R
Партнеры
Amicus Studio
NunDesign
Горящие путевки, идеи путешествийMegaTIS.Ru

2000-2008 г.   
Все авторские права соблюдены.
Rambler's Top100