Сайт о телевидении

Сайт о телевидении

» » Практические работы по delphi. Практическая работа "Проектирование в среде Delphi. Доступ к базе данных Microsoft Access"

Практические работы по delphi. Практическая работа "Проектирование в среде Delphi. Доступ к базе данных Microsoft Access"

Задачи урока

  • Работа с компонентом SpeedButton
  • Назначение одного события нескольким компонентам.
  • Приведение типов.

Выполнение упражнения

В этом уроке мы напишем облегчённый вариант калькулятора, аналогичный тому, что есть в Windows (рисунок 1). Он будет проводить четыре арифметических действия с целыми числами. Обозначим функциональность нашего калькулятора:

  • отображает в однострочном редакторе число, которое вводится при помощи цифровых кнопок;
  • при нажатии на кнопку типа операции она запоминается;
  • при нажатии на кнопку «=» отображается результат операции над числами.

Рисунок 1. Окно приложения

1. Дизайн приложения

  1. Расположите компоненты согласно рисунку 2а и задайте значение их свойства согласно рисунку 2б. В сносках обозначены порядковые номера компонентов SpeedButton .

а) б)
Рисунок 2

Здесь мы столкнёмся с новым компонентом - кнопкой SpeedButton (вкладка Additional ). Эта кнопка аналогична компоненту Button , но имеет некоторые особенности.

  1. Измените имена компонентов следующим образом:
Имя, которое Имя, на которое

необходимо изменить

Что это означает?
Edit1 EditOut Однострочный редактор для вывода результата
SpeedButton1 - SBtn1 - SBtn10 Цифровые кнопки
SpeedButton11 SBtnRavno Кнопка «равно»
SpeedButton12 SBtnС Кнопка сброса
SpeedButton13 SBtnPlus Кнопка «плюс» Определяют тип

операции над числами

SpeedButton14 SBtnMinus Кнопка «минус»
SpeedButton15 SBtnMult Кнопка «умножить»
SpeedButton16 SBtnDiv Кнопка «разделить»

Отметим, что имя компонента SpeedButton изменено на его аббревиатуру - SBtn , т. к. оно слишком длинное.

2. Цифровые кнопки калькулятора

  1. Для создания калькулятора прежде всего объявите глобальные переменные (обозначены жёлтым цветом):
var Form1: TForm1; A,B:Real; // Числа, с которыми будут выполняться арифметические действия Result:Real; // Результат математической операции: Result = A <мат.операция, определяемая переменной typ> B typ:Integer; // Тип операции над числами: * / - + implementation {$R *.dfm}

Листинг 1

Для чего нужна каждая переменная, понятно из комментариев.

  1. Напишите обработку события кнопки с заголовком «1 » таким образом, чтобы при её нажатии в однострочном редакторе отображалась соответствующая цифра. Для этого обработайте событие OnClick от кнопки SBtn1 следующим образом:
procedure TForm1.SBtn1Click(Sender: TObject); begin EditOut.Text:=EditOut.Text + SBtn1.Caption; end;

Листинг 2

Эта запись означает, что в компонент EditOut к его существующему содержимому будет добавлен заголовок первой кнопки (т. е. «1 »).

  1. Запустите программу и нажмите несколько раз на кнопку «1 ». В компоненте EditOut происходит отображение заголовка кнопки (рисунок 3).


Рисунок 3

  1. Чтобы при нажатии на другие цифровые кнопки происходило отображение их заголовка, необходимо обработать событие OnClick для каждой кнопки. Но… это практически один и тот же код (отличие только в названии кнопки)!!! Поэтому такие действия непрактичны. Намного проще запрограммировать один обработчик события для всех кнопок, и в нём определять, на кнопку с каким заголовком нажал пользователь. Но как это сделать?

Прежде всего, всем цифровым кнопкам (кроме кнопки «1 ») назначьте обработчик события OnClick кнопки SBtn1 . Для этого выделите все цифровые кнопки (через клавишу Shift ), кроме первой (рисунок 4а), перейдите в окно Инспектор объектов на вкладку Events и раскройте выпадающий список напротив события OnClick (рисунок 4б). Появится список всех созданных событий для компонентов формы, которые имеют такой же формат процедуры, как и у выбранного компонента (либо компонентов). В нашем случае здесь находится всего одна процедура обработки события OnClick первой кнопки. Выберите её.

Перейдите к окну конструктора формы и выполните двойной щелчок на каждой цифровой кнопке. При этом убедитесь, что всё время происходит обращение к одной и той же процедуре SBtn1Click .

а) б)
Рисунок 4

  1. Запустите программу и пощёлкайте на цифровых кнопках. Они работают все, но в компоненте EditOut выводится «1 » в любом случае.

3. Но цифры-то разные?

  1. Итак, первый шаг мы сделали. Теперь нажатие на любую цифровую клавишу обрабатывается одной и той же процедурой. Осталось выяснить, от какой именно кнопки пришло событие.

Ранее мы говорили, что в любой обработчик события передаётся обязательный параметр Sender , типа TObject . Этот параметр как раз и содержит информацию о компоненте, от которого пришло событие. Для выполнения каких-либо операций с этим параметром необходимо привести его к типу того компонента, для которого выполняются операции. Выглядит это следующим образом:

<Тип> (Sender)

Например, приведенные ниже две записи события OnClick кнопки SBtn1 типа TSpeedButton будут функционально аналогичны (приведение типов выделено жёлтым цветом):

EditOut.Text:=editOut.Text + SBtn1.Caption; editOut.Text:=editOut.Text + TSpeedButton(Sender).Caption;

Листинг 2

Воспользуемся этим чудесным параметром и перепишем обработчик события SBtn1Click следующим образом:

Procedure TForm1.SBtn1Click(Sender: TObject); begin editOut.Text:= editOut.Text + TSpeedButton(Sender).Caption; end;

Листинг 3

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

  1. Запустите программу и пощёлкайте по цифровым кнопкам. Теперь они работают правильно!

4. Функциональные клавиши калькулятора

  1. Следующая задача - это выполнение операций над введенными числами. Порядок работы с калькулятором должен быть следующий:
  • ввод первого числа «A »;
  • нажатие на кнопку типа операции;
  • ввод второго числа «B »;
  • нажатие на кнопку «= » для получения результата.

Ввод чисел мы уже реализовали. Теперь необходимо запомнить тип операции после нажатия пользователем на соответствующую кнопку (+ – * /). Но как мы определим, на какой из типов операций мы нажали?

Здесь просмотр заголовков функциональных кнопок, как было в случае с цифровыми кнопками калькулятора, нецелесообразен. Причины рассматриваются ниже. Лучше использовать какой-то другой параметр компонента. Идеальным вариантом в этом случае будет свойство, которое есть абсолютно у всех компонентов - Tag , типа Integer . Оно изначально никаких действий над компонентом не производит, и было введено разработчиками среды Delphi для нужд программистов. Присвойте значения для свойства Tag кнопкам операций, как показано на рисунке 5.


Рисунок 5

Таким образом, каждой операции будет присвоен личный номер.

  1. Как и в предыдущем случае, реализуем одну обработку события OnClick для всех арифметических операций. Для этого создайте обработчик OnClick для кнопки SBtnPlus и напишите в нём следующий код:
procedure TForm1.SBtnPlusClick(Sender: TObject); begin A:= strtofloat(EditOut.text); Typ:= TSpeedButton(Sender).Tag; EditOut.Clear; end;

Листинг 4

Поясним код:

  • запоминаем число, введенное в однострочный редактор в переменной A ;
  • запоминаем операцию в переменной Typ ;
  • очищаем однострочный редактор для ввода второго числа.
  1. Выделите кнопки – * / и через Инспектор объектов присвойте их события OnClick событию SBtnPlusClick .
  2. Теперь обработайте событие кнопки «=» следующим образом:
procedure TForm1.SBtnRavnoClick(Sender: TObject); begin B:= strtofloat(EditOut.text); Case typ of 0: Result:= A + B; 1: Result:= A - B; 2: Result:= A * B; 3: Result:= A / B; end; A:= Result; EditOut.Text:= floattostr(Result); end;

Листинг 5

Поясним код:

  • запоминаем второе число в переменную B ;
  • вычисляем результат, исходя из типа операции с помощью оператора выбора Case of (выделено жёлтым). Обратите внимание на то, что если бы мы считывали тип операции с названий кнопок, то данная процедура была бы куда более громоздкой, т. к. мы не смогли бы воспользоваться оператором выбора (он не работает с типом String ). Для каждого типа операций пришлось бы записывать оператор If . Результат операции заносится в переменную Result ;
  • переменной A присваиваем значение результата для дальнейших арифметических действий;
  • отображаем результат в однострочном редакторе EditOut .
  1. Обработайте событие кнопки «C » следующим образом:
procedure TForm1.SBtnCClick(Sender: TObject); begin EditOut.Clear; end;

Листинг 6

Эта кнопка выполняет очистку компонента EditOut .

  1. Запустите приложение. Введите 10 и нажмите на кнопку «+», введите 5 и нажмите на кнопку «=». Получите на экране 15. Проверьте остальные арифметические операции. Как видите, калькулятор - это просто!

5. Коротко о главном

Если имя компонента слишком длинное, то лучше его сократить.

Глобальные переменные объявляются перед разделом Implementation . Они видны во всём модуле.

Любое событие компонента можно привязать к аналогичному событию другого компонента.

Параметр Sender содержит информацию о типе компонента, от которого пришло событие.

Для выполнения с этим параметром Sender каких-либо операций, необходимо привести его к типу того компонента, для которого выполняются эти операции.

Свойство Tag типа Integer есть у всех компонентов. Оно было введено разработчиками среды Delphi для нужд программистов.

6. Выполнение заданий

Задания I уровня сложности

1. Модифицируйте созданный калькулятор так, чтобы он вычислял обратное значение числа (кнопка «1/x ») и корень (кнопка «sqrt »). Если вычисление невозможно, то вывести в однострочном редакторе текст «Ошибка ».

2. Модифицируйте созданный калькулятор для ввода дробных чисел (кнопка « , »). Причём так, чтобы запятую можно было ввести один раз. Если запятая присутствует и была нажата кнопка « , » в другой части числа, то запятая должна «перескочить» в новое место.

3. Модифицируйте созданный калькулятор для возможности изменения знака числа на обратный (кнопка « +/– »).

4. Модифицируйте созданный калькулятор так, чтобы можно было удалять последний символ (кнопка «Del »), вводить два нуля (кнопка «00 ») и вводить число Pi (Кнопка «Pi »).

5. Модифицируйте созданный калькулятор так, чтобы была возможность разделения групп разрядов с сохранением всей функциональности калькулятора. Например, чтобы вместо 3456190 было 3 456 190.

6. Модифицируйте созданный калькулятор так, чтобы в нём была возможность запоминать введенное число (кнопка «W») и отображать его (кнопка «R»). Причём на форме должна находиться метка, где будет отображено сохраненное число.

7. Модифицируйте созданный калькулятор так, чтобы он возводил число в квадрат (кнопка «x^2») в куб (кнопка «x^3») и в любую степень (кнопка «x^y»).

8. Модифицируйте созданный калькулятор так, чтобы он вычислял sin x , cos x , tan x и cotan x . Причём на форме должны быть два компонента RadioButton , в которых бы происходило переключение между размерностью вычисления (радианы либо градусы).

9. Модифицируйте созданный калькулятор так, чтобы числа можно было вводить прямо в окне однострочного редактора, а также с помощью клавиш + – * / выполнять соответствующие операции. Кнопка «= » должна соответствовать клавише Enter.

Задания II уровня сложности

1. Модифицируйте созданное приложение для работы с двоичными числами (перевод из двоичной системы счисления в десятичную систему и, наоборот, сложение двоичных чисел, операции Not , And , Or , Xor ). Переключение между десятичной и двоичной системами счисления осуществляется через компоненты RadioButton .

2. Модифицируйте созданное приложение для работы со статистическими вычислениями. Для этого на форме должна быть кнопка «Data », при нажатии на которую в массив запоминалось бы введенное число. И кнопки для выполнения над этим массивом следующих операций:

  • вывод количества символов в массиве;
  • вычисление среднего арифметического;
  • вычисление суммы всех чисел;
  • нахождение максимального элемента массива;
  • нахождение минимального элемента массива.

Delphi 8 для Microsoft .NET Framework - это интегрированная среда разработки (Integrated Development Environment), выполняющаяся на платформе Microsoft .NET и поддерживающая полный цикл жизни разработки приложений. Интерфейс среды сильно отличается от интерфейсов предыдущих версий, например от Delphi 7. Ниже мы рассмотрим создание различных типов приложений с помощью этого средства разработки.

Создание простейшего приложения Windows Forms

После нажатия кнопки «Здравствуй, мир!» вы получите форму.

При создании приложений для платформы Windows может быть выбрана опция VCL (Visual Component Library) Forms Application , которая специально оставлена для совместимости с предыдущими версиями Delphi. Как и в приложении типа Windows Forms Application , на рабочем столе интегрированной среды разработки появится конструктор форм. Обратите внимание, что свойства и события различны для экземпляров объектов классов Form1 и TWinForm (в этом имени видим расхождение с правилами, принятыми в Delphi, - так обычно обозначаются типы) вроде TForm1 и System.Windows.Forms.Form , выполняющих аналогичные функции. При создании новых проектов мы рекомендуем использовать Windows Forms Application , как более соответствующий платформе. Среда разработки автоматически загружает необходимый конструктор форм и палитру инструментов в зависимости от выбора типа приложения.

Создание простейшего приложения VCL Forms Application

Сценарий создания приложения типа Windows VCL Application таков:

В результате нажатия кнопки «Здравствуй, мир!» будет получена форма.

Как видно из вышеприведенных форм приложений, несмотря на мелкие отличия, в целом функциональность одинаковая. Отметим также, что в процессе конструирования приложений наборы компонентов, доступных для использования, также различаются. Кроме того, в Delphi 8 имеются и некоторые иные, по сравнению с Delphi 7, языковые конструкции, которые представлены в таблице.

Основные различия в синтаксисе языков Delphi 7 и Delphi 8

Delphi 7

Delphi 8

Real48 Double
Absolute, Addr, @ Не поддерживается
GetMem, FreeMem, ReAllocMem New, Dispose или динамический массив
Тип object Тип class
File of любого типа, включая записи Streams, serialization, базы данных
Inline assembly или asm с ключевыми словами Не поддерживается
ExitProc Не поддерживается
FillChar, Move Переопределение переменных в цикле
PChar String или StringBuilder (тип String в.NET не эффективен для операций конкатенации. Используйте тип StringBuilder)
ADO, WebBroker, InternetExpress, WebSnap и поддержка XML, связанная с компонентами TXMLTransform Не поддерживается
Компоненты с закладки System: OLEContainer, DdeClientConv, DdeClientItem, DdeServerConv, DdeServerItem Не поддерживается

Создание консольных приложений

Простейшее консольное приложение создается следующим образом:


Ниже приведен пример консольного приложения, которое благодаря директивам {$IFDEF} будет одинаково хорошо работать после компиляции на Delphi for .NET, Delphi 7 или Kylix 3, выдавая соответствующую строку:

program HelloWorld;

{$APPTYPE CONSOLE}

{$IFDEF CLR} // Delphi for .NET

writeln("Hello, .NET world!");

{$IFDEF WIN32} // Delphi 7

writeln("Hello, Win32 world!");

{$IFDEF LINUX} // Kylix

writeln("Hello, Linux world!");

ReadLn; //чтобы задержать выполнение

Следующий пример - консольное приложение, работающее с файлами:

1. Выберите опцию меню File=>New=>Other=>Delphi for .Net Projects Console Application .

2. В секции реализации автоматически сгенерированного каркаса приложения вставьте код.

WriteLn ("Демонстрашка работы с файлами!");

AssignFile(FT, "file-text.txt");

WriteLn(FT, "Hello, developer!");

3. После сохранения и выполнения проекта на экране монитора появится окно приложения.

Отметим два момента, связанных с этим приложением.

Во-первых, хотя в документации ничего не говорится о невозможности работы с нетипизированными файлами, конструкция FB: file of word; не компилируется, а выдается ошибка “Unsupported language feature: typed or untyped file”.

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

Создание приложений с базами данных

Ниже приводится сценарий, описывающий построение ADO.NET-приложения, использующего шаблон Windows Forms Application и новую технологию BDP.NET, которая включает компоненты, необходимые для конструирования приложений с базами данных:


При переносе приложения на другой компьютер важно, чтобы база данных employee.gdb лежала в определенном месте (например, d:/data) - иначе потребуется переопределять экземпляр компонента bdpConnection1.

Выравнивание таблицы относительно формы можно осуществить с помощью свойств Anchor и Dock .

При добавлении к проекту ссылок командой Add Reference… не допускается наличие пробелов в пути.

Создание приложений ASP .NET

Замечание . Если вы хотите инсталлировать Delphi 8 с целью создания приложений ASP .NET, то на компьютере уже должны быть установлены службы Internet Information Services. Если ISI были установлены после Delphi 8, то для корректной работы ASP .NET-приложения следует ввести команду:

aspnet_regiis.exe /i

Для создания приложений ASP .NET:


При конструировании этого приложения проявились две функциональные особенности, свойственные технологии ASP .NET, которые отсутствовали в технологиях разработки Web-приложений до Delphi 8. Первая - ASP .NET позволяет создавать только DLL-приложения, но при этом в случае совмещения отладки через IIS и отладки в среде разработки не требуются постоянные вызовы утилиты iisreset.exe для обеспечения возможности трансляции очередной версии динамической библиотеки.

Вторая - в то же время в случае определения глобальной переменной, так как это было сделано в рассматриваемом проекте, при повторном вызове ресурса сохраняется ее предыдущее значение, а его сброс можно осуществить только применением утилит типа iisreset.exe.

Для переноса данного проекта на другую машину необходимо скопировать директорию HelloWorld в соответствующую директорию, описанную в IIS как виртуальный каталог.

Нажав кнопку Create , нужно сделать упомянутую директорию каталогом приложения (на рисунке выше приведено окно для свойств директории HelloWolrd в ОС Windows 2000 Advanced Server). После выполнения этих действий Web-приложение может быть вызвано на локальной машине командой

В данном практикуме представлены практические работы по созданию консольных приложений в системе программированияDelphi 7.

Практическая работа № 1

“Создание первого консольного приложения”

Цели работы:

  • изучить технологию создания консольного приложения на Delphi 7;
  • создать первое консольное приложение на Delphi 7.

Порядок выполнения:

1. Загрузите Delphi 7.

2. Из меню File выберите команду New | Other, затем на вкладке New появившегося диалогового окна New Items - тип создаваемого приложения - Console Application.

Рис.1.1. Выбор создаваемого консольного приложения в окне New Items

Рис.1.2.Шаблон главной процедуры консольного приложения

3. В результате этих действий на экране появится окно Project1.dpr, в котором можно набирать инструкции программы (Рис.1.2). Директива {$APPTYPE CONSOLE} предназначена для компилятора и сообщает ему, что программу нужно генерировать как консольное приложение. Далее используем знания языка Pascal: операторы записывается между begin и end, константы и переменные объявляются выше основной программы, процедуры и функции размещают между объявлением переменных и основной программой. Добавьте в тело программы строчку Writeln("Hello!"). Запустите ее на выполнение, щелкнув по кнопке или нажав клавишу F9 .

4. Быстро появится и исчезнет черное окно. Как следует поступить далее, чтобы можно было “остановить” это окно? Простейший метод - добавить оператор Readln.

Рис.1.3. Окно с кодом программы

5. Запустите программу на выполнение.

Рис.1.4. Результат выполнения программы Console.dpr

6. Сохраните проект в отдельной папке Консоль под именем Console, выбрав пункт меню File-Save All. В момент сохранения проекта имя программы будет автоматически заменено на имя, под которым сохранен проект.

7. Откройте папку Консоль , затем файл Console.dpr - это и есть та основная программа, которая редактируется.

Практическая работа № 2

“Выведение на экран русского текста”

Цель работы: изучить технологию выведения на экран консольного приложения текста на русском языке.

Порядок выполнения:

1. Создайте копию папки Консоль (Практическая работа №1).

2. Переименуйте ее: Консоль_рус.

3. Загрузите файл Console.dpr

4. В программном коде замените команду вывода на Writeln("Здравствуй!"); и запустите программу на выполнение. Наверняка, вместо приветствия вы увидели какую-то “чушь”.

CharToOEM (PСhar(s), PChar(s));

Здесь PChar(s) обозначает адрес символа, с которого начинается строка s. Первый параметр функции - адрес исходной строки, а второй - адрес строки-результата. В данном случае оба адреса совпадают.

Объявите символьную переменную (var s:string;).

Внесите изменения в код основной программы таким образом:

s:= " Здравствуй!";

6. Добавьте модуль Windows в список uses:

Windows, SysUtils;

Рис. 2.1. Окно с кодом программы

7. Запустите программу.

Рис. 2.2. Результат исполнения программы Console_rus.dpr

8. Сохраните программу (Console_rus.dpr) и закройте проект.

Практическая работа № 3

“Программы с линейноЙ структурой”

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

Порядок выполнения:

1. Ознакомьтесь с условием задачи: Создать консольное приложение для вычисления площади прямоугольника.

2. Создайте консольное приложение по предложенному на рис.3.1. образцу:

      Рис.3.1. Окно консольного приложения Plosh_pryamoug.exe

3. Сравните свой программный код с листингом 3.1.

Листинг 3.1. Площадь параллелограмма

program Plosh_pryamoug;

{$APPTYPE CONSOLE}

var s,i,h,p:string;

dl,shir,pl:integer; // длина, ширина, площадь

s:= "Площадь прямоугольника";

CharToOEM (PChar(s), PChar(s));

i:="Введите значение длины";

CharToOEM (PChar(i), PChar(i));

h:="Введите значение ширины";

CharToOEM (PChar(h), PChar(h));

p:="Площадь прямоугольника равна ";

CharToOEM (PChar(p), PChar(p));

Writeln(p,pl) ; readln; end.

Практическая работа № 4

“Создание консольного приложения
“Hello, world! Здравствуй, мир!”

Цели работы:

  • закрепить навыки по самостоятельному созданию консольных приложений для алгоритмов с линейной структурой;
  • вывести на экран текст на русском и английском языках.

Порядок выполнения:

1. Дана задача: Создать консольное приложение для выведения на экран текста:

    Здравствуй, мир!

2. Создайте консольное приложение по предложенному на рис.4.1. образцу.


3. Сравните свой программный код с листингом 4.1.

Листинг 4.1.Hello, world! Здравствуй, мир!

program Hello_mir;

{$APPTYPE CONSOLE}

Windows, SysUtils;

WriteLn ("Hello, world!");

s:= "Здравствуй, мир!";

CharToOEM (PChar(s), PChar(s));

Практическая работа № 5

“Алгоритмы разветвляющейся и циклической структуры”

Цели работы:

  • самостоятельно создать консольное приложение с использованием оператора for, который используется для организации циклов с фиксированным, определяемым во время разработки программы, числом повторений;
  • повторить оператор ветвления if…then;
  • закрепить навыки выведения текста на экран.

Задача: С клавиатуры вводятся N чисел. Составьте программу, которая определяет количество отрицательных, количество положительных и количество нулей среди введенных чисел. Значение N вводится с клавиатуры (стр.35, № 14 - сборник “Основы информатики и вычислительной техники. 9 класс”, Б.Бурибаев, Р. Дузбаева, А. Махметова, Алматы “Мектеп”, 2005 год).

Листинг 6.1. for_if

{$APPTYPE CONSOLE}

var a,b,n,so,sp,sn:integer; // a -параметр цикла, n - число вводимых чисел, b - вводимое число, so - число введенных отрицательных чисел, sp - число введенных положительных чисел, sn - число введенных нулей.

s1,s2,s3,s4,s5:string;

s1:= "Задайте количество чисел, которые будут введены";

CharToOEM (PChar(s1), PChar(s1));

For a:=1 to n do begin

s2:="Введите любое целое число";

CharToOEM (PChar(s2), PChar(s2));

If b<0 then so:=so+1;

If b>0 then sp:=sp+1;

If b=0 then sn:=sn+1;

s3:= "Число введенных отрицательных_чисел равно";

CharToOEM (PChar(s3), PChar(s3));

s4:= "Число введенных положительных_чисел равно";

CharToOEM (PChar(s4), PChar(s4));

s5:= "Число введенных нулей равно";

CharToOEM (PChar(s5), PChar(s5));

Рис.6.1. Окно созданного консольного приложения for_if.exe

Практическая работа №1

Тема: ПЕРВЫЙ ПРОЕКТ

Цель занятия: использование компонентов Label (метка) и Button (кнопка) палитры компонентов Standard, обработка события OnClick - нажатие кнопки.

Задача №1.

Создать программу, выполняющую следующие действия:

После запуска программы по щелчку мышью на кнопке «Приветствие» появляется сообщение «Первые успехи!». Для выхода из программы необходимо щелкнуть мышью на кнопке «Выход».

Новым в этой работе является:

Этапы разработки программы

1. Откройте новый проект.

2. Разместите в форме экземпляры компонентов: метку Label и две кнопки Button

3. Выделите кнопку Button2, перейдите в Object Inspector на вкладку Properties, найдите свойство Caption (заголовок) и измените Button2 на заголовок

«Выход». Перейдите на страницу Events окна Object Inspector, найдите событие OnClick, справа от него дважды щелкните мышью. Оказавшись в коде программы, точнее, в заготовке процедуры TForm1.Button2Click, напишите лишь одну команду Close; (обязательно поставьте точку с запятой после «Close»).

procedure TForm1.Button2Click(Sender: TObject);

begin

Close;

end;

4. Сохраните код программы и проект под именами, например, Unit2.pas и Pr2.dpr.

5. Запустите программу, затем закрыть окно проекта, щелкнув на кнопке «Выход».

6. Выделите форму, в свойстве Caption окна Object Inspector замените слово Form1 на «Мой проект». Это и будет заголовком основного окна программы.

7. Выделите кнопку Button1, в свойстве Caption окна Object Inspector замените слово Button1 на название копки «Приветствие». При необходимости увеличьте длину кнопки.

8. Не снимая выделения с кнопки Button1, перейдите на страницу Events окна Object Inspector и найдите событие OnClick, справа от него дважды щелкните

мышью. Введите следующий код: Label1.Caption:= ’Первые успехи!’;

9. Сохраните проект окончательно, запустите и протестируйте его.

Задача №2.

1. Сделайте шрифт выводимой реплики «Первые успехи!» отличным от стандартного по виду, цвету и размеру.

2. Замените вид кнопки «Выход» на более привлекательный.

3. Сделайте так, чтобы после нажатия кнопки «Приветствие» на экране появлялось сообщение «Первые и не последние!».

4. Запустите исполняемый файл Pr2.exe не в среде Delphi, а в Windows.


По теме: методические разработки, презентации и конспекты

Урок - обобщение знаний по теме "Устройство компьютера". Основной акцент делается на устройстве ввода информации в компьютер - клавиатуре. Для работы в графическом редакторе Paint разработаны практиче...

Самостоятельная работа по инструментам форматирования текста и две практические работы в MS Word 2007

Небольшая самостоятельная работа для закрепления материала.Две практические работы по созданию и обработке таблиц в текстовом редакторе....

Листинг подпрограммы

procedure TForm1. RadioButton1Click (Sender: TObject);

var i: Integer;

ComboBox1.Clear;

ComboBox1.Tag:= (Sender as TRadioButton).Tag;

for i:= 0 to 5 do

ComboBox1.Items. Add (ListBox1.Items );

ComboBox1.ItemIndex:= 0;

Image1.Picture. LoadFromFile (ListBox2.Items );

procedure TForm1.FormCreate(Sender: TObject);

RadioButton1Click(RadioButton1);

procedure TForm1.ComboBox1Change (Sender: TObject);

Image1.Picture. LoadFromFile (ListBox2.Items );

Практическая работа № 17

«Вычисление процентов»

Цель работы - с оздать программу, выполняющую следующие действия:

После запуска программы в окне изображается три текстовых поля.
При нажатии кнопки «Очистить» очищаются значения полей. Далее вводятся новые значения в поля. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка.

1. Открыть новый проект.

2. Разместить на форме экземпляры компонентов: командная кнопка Button , надпись Label , текстовое поле Edit .

Таблица 19.

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

Установка имени формы «Вычисление процентов»

Введите название «Считаем проценты!»

Очистить значение свойства

Очистить значение свойства

Очистить значение свойства

Описать локальные Number, Procent, Prn


Продолжение таблицы 19.

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

Введите название «Очистить»

Фрагмент программы

Number, Procent, Prn: Real;

procedure TForm1.Button1Click(Sender: TObject);

Number:=StrToFloat(Edit1.Text);

Procent:= StrToFloat(Edit2.Text);

PrN:=0.01*Procent*Number;

Edit3.Text:=FloatToStr(PrN);

procedure TForm1.Button2Click(Sender: TObject);

Практическая работа № 18

«Головоломка №1»

MsoTableGrid" width="657 " style="width:492.85pt;border-collapse:collapse;border:none">

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

Установка имени формы «Головоломка»

Задайте значение bsSingle

CheckListBox1

(Вкладка Additional)

Задаем состав списка. Щелкнуть на кнопке построителя. Откроется окно String List editor (Редактор списка строк). Введите в список заданные числа через Enter. Нажмите кнопку OK.

Подобрать значение так, что все числа поместились в список (без полос прокруток).

Описать очистку списка. Проверить, установлен флажок или нет. После обновления списка необходимо подсчитать сумму выбранных чисел. Элементы списка выглядят как числа, но являются текстовыми строками (воспользоваться функцией StrToInt).


Продолжение таблицы 20.

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

ListBox1

(Вкладка Standard)

Подобрать значение так, что все числа поместились в список (без полос прокруток). Первоначально список пуст. Заполняться он будет при работе программы.

(Вкладка Standard)

Введите текст: «Сумма: 0»

Задайте значение False

Задайте значение taCenter

4. Сохраните проект, запустите и протестируйте его.

Листинг подпрограммы

procedure TForm1.CheckListBox1ClickCheck (Sender: TObject);

var i, s: Integer;

for i: = 0 to CheckListBox1.Items. Count-1 do

if CheckListBox1.Checked[i] then

ListBox1.Items. Add (CheckListBox1.Items[i]);

for i:= 0 to ListBox1.Items. Count -1 do

s:= s + StrToInt(ListBox1.Items[i]);

Label1.Caption:= ‘Сумма: ’ + IntToStr(s);

if s = 50 then

Label1.Caption:= ‘Сумма:’ + IntToStr (s);

CheckListBox1.Enabled:= False;

ListBox1.Enabled:= False;

Практическая работа № 19

«Головоломка № 2»

Цель работы - создать компьютерную версию головоломки: из изображенных пяти сброшенных флажков установить все. Но при выборе одного флажка меняется состояние двух следующих.

Создать программу, выполняющую следующие действия:

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

Описание плана разработки программы

1. Открыть новый проект.

2. Разместить на форме экземпляры компонентов: список флажков CheckBox , надпись Label .

3. Выполнить следующие действия:

Таблица 21.

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

Установка имени формы «Все пять»

Создать глобальную логическую переменную s. В то время, когда идет обработка события, переменная имеет значение True (да).

CheckBox1

(Вкладка Standard)

Задать значение «1».

Необходимо работать с флажками, как с массивом. Форма является контейнером для флажков. У объектов-контейнеров имеется свойство Controls (Элементы управления) – массив элементов управления, находящихся в данном контейнере: Controls [i] as TCheckBox.

Для создания еще пяти флажков можно использовать метод копирования через буфер обмена.

CheckBox2

Задать значение «2».

CheckBox3

Задать значение «3».

CheckBox4

Задать значение «4».

CheckBox5

Задать значение «5».


Продолжение таблицы 21.

Выделенный объект

Вкладка окна

Object Inspector

Имя свойства/

имя события

Действие

(Вкладка Standard)

Введите текст: «Сумма: 0»

Задайте значение False

Задайте значение taCenter

4. Сохраните проект, запустите и протестируйте его.

Листинг подпрограммы

procedure TForm1.FormCreate (Sender: TObject);

procedure TForm1.CheckBox1Click (Sender: TObject);

var Index, i, num: Integer;

if s then Exit; {Если программа снова вызовет процедуру обработки, будет выполнен оператор Exit – немедленный выход из процедуры}

for Index: = 0 to 4 do {Оператор break прерывает выполнение цикла}

if Sender = Controls[i] then break; {Определяется, какой флажок был переключен}

{Когда выполнение цикла завершается, значение переменной Index соответствует переключенному флажку}

{Если значение свойства Checked (Установлен) равно False (Нет), флажок сброшен, а если True (Да) – установлен. Номер флажка в массиве определяется переменной Index}

if not (Controls as TCheckBox).Checked

then (Controls as TCheckBox).Checked:= True {Условие выполнено, если флажок сейчас сброшен, т. е. до щелчка он был установлен}

else {Программирование изменения состояния «дополнительных флажков». Текущий флажок уже переключен}

num:= Index + 1; {Переключение двух следующих флажков}

if Index = 4 then num:= 0; {Изменение состояния нулевого флажка}

{Состояние флажка надо поменять на противоположное}

(Controls as TCheckBox).Checked:= not

{Выполнение проверки на выход за пределы массива}

num:= num + 1; if Index = 3 then num:= 0;

(Controls as TCheckBox).Checked:= not (Controls as CheckBox).Checked;

e:= True; {Головоломка решена, если установлены все пять флажков}

for i:= 0 to 4 do

e:= e and (Controls[i] as TCheckBox).Checked;

{После цикла значение останется равным True, если все флажки установлены}

if e then {Головоломка решена}