Всё для Учёбы — студенческий файлообменник
1 монета
doc

Лабораторная № 1 «Составление программы с формой» по Информатике (Болдасов В. С.)

1 - е упражнение по Delphi

1 Задание

Составить программу с формой Form1 (УЭ типа TForm, создается автоматически, а разме-ры можно изменить мышкой) вида

где Label1, Label2, Label3 – метки (тип Tlabel, инструмент Label ).

Edit1, Edit2, Edit3 – поля ввода (тип T Edit, инструмент ).

Button1 и Button2 – командные кнопки (тип TButton, инструмент ).

2 - Сведения о среде

Назначение окон

1. Главное окно – ввод команд с помощью меню и панелей инструментов.

2. Конструктор формы – создание образа формы с размещенными на ней управляю-щими элементами (УЭ), а также размещение не визуальных компонентов, исполь-зуемых, например, для разработки главного или всплывающих меню. Для поме-щения на форму нового компонента следует щелкнуть на соответствующем значке панели инструментов Палитра компонентов (Component Palette, см. рисунок, вкладки Standard, Additional, Win32,…). Для работы с компонентом в Инспекторе объектов его следует выделить щелчком.

3. Редактор кода – редактирование текста программы.

4. Проводник кода – для быстрого (по двойному щелчку) перехода в тексте програм-мы к ссылке на модуль, к описанию переменной, константы, поля в классе формы или к началу тела подпрограммы метода - обработчика события.

5. Инспектор объектов – задание на вкладке Properties свойств выделенного объекта и создание (двойным щелчком) на вкладке Events для событий объекта новых ме-тодов (обработчиков с пустым телом, заполняемым в дальнейшем в Редакторе ко-да) или назначение (выбором из раскрывающегося списка) событиям объекта уже имеющихся обработчиков.

6. Обозреватель дерева объектов – для выделения объекта, с которым предстоит ра-ботать в Инспекторе объектов.

7. Окно сообщений об ошибках, вкладка Messages – содержит сообщения об ошибках и расположении в программе соответствующих операторов (мест), для перехода к которым следует сделать двойной щелчок на сообщении.

8. Окно наблюдения, вкладка Watch List – для отображения в процессе отладки те-кущих значений переменных или выражений. Появляется по команде Run\Add Watch…. Объединяется с Окном сообщений перетаскиванием на последнее.

Конструирование формы

9. Добавить стандартный УЭ на форму – щелкнуть на УЭ на вкладке Standard, щелк-нуть на форме в месте вставки УЭ.

10. Удалить УЭ с формы – щелкнуть на нем и нажать клавишу Delete.

11. Изменить значение свойства УЭ-та – выделить УЭ, щелкнуть на свойстве на вкладке Properties в окне Инспектор объектов, ввести или выбрать нужное значе-ние в строке этого свойства.

12. Добавить для УЭ-та обработчик события - выделить УЭ, на вкладке Events в окне Инспектор объектов или сделать двойной щелчок на событии, или щелкнуть на событии и ввести или выбрать нужное значение в его строке.

13. Удалить обработчик события – удалить текст обработчика и его заголовок в опи-сании типа класса формы, а также очистить строку соответствующего события в окне Инспектор объектов.

Выполнение и отладка программы

14. Запуск программы – или Run\Run, или кнопка , или F9

15. Выполнить до курсора – Run\Run to Cursor или F4

16. Выполнить строку с заходом в п\п – или Run\Trace Into, или кнопка , или F7

17. Выполнить строку без захода в п\п – или Run\Trace Over, или кнопка , или F8

18. Завершить отладку – Run\Program Reset или Ctrl+F2

19. Отобразить окно наблюдения - Run\Add Watch… или нажать Ctrl+F5, ввести имя переменной или выражение, нажать OK. Появившееся окно Watch List можно от-буксировать к нижней части окна редактора кода и объединить с окном Messages, как показано на рисунке. Чтобы добавить в окно наблюдения новую переменную, можно установить на ней курсор в окне редактора кода, активизировать окно наблюдения, сделать на нем двойной щелчок и нажать кнопку OK.

20. Установить точку останова – щелкнуть в окне редактора кода на сером поле перед строкой, на которой д.б. эта точка (см. рисунок).

21. Убрать точку останова – повторить действия п. 7.

3 - Выполнение задания

Создание проекта и макета формы

1. Запустите Delphi 6. При этом автоматически будет создана форма с именем Form1. Если Delphi 6 уже запущена и использовалась для создания другой программы, то сле-дует ввести команду File\New\Application.

2. Сохраните программу в новом подкаталоге Программа 1 рабочего каталога командой File\Save All (Delphi 6 последовательно предложит сохранить программу в файлах Project1.dpr и Unit1.pas). Не меняйте эти имена. В дальнейшем, если Delphi 6 откры-вается для загрузки программы на редактирование, выбирайте файл Project1.dpr или, после открытия Delphi 6, используйте команду File\Open Project… для этого файла. В процессе работы не забывайте периодически сохранять файлы программы щелчком на кнопке панели инструментов Standard.

3. Щелчком активизируйте окно формы, в диалоге (в окне диалога) Инспектора объек-тов (Object Inspector) на вкладке Properties щелкните на поле Caption и введите заго-ловок формы Задание 1.

4. Измените размеры формы мышкой или заданием значений в свойствах Height и Width.

5. Разместите на форме поле ввода Edit1 следующим образом: щелкните на кнопке Edit панели инструментов Component Palette\ щелкните на форме в том месте, где должен располагаться левый верхний угол этого УЭ\. Измените, при необходимости, размеры и положение УЭ мышкой или заданием значений свойствам Height, Width, Left и Top.

6. Аналогично разместите на форме (соблюдая порядок) поля ввода Edit2 и Edit3, затем командные кнопки Button1 и Button2, а также метки Label1, Label2 и Label3, исполь-зуя кнопку Button, а также кнопку Label соответственно. Для изменения надписей на командных кнопках и метках используйте их свойство Caption.

7. Запустите программу щелчком на кнопке Run (F9) панели инструментов Debug или вводом команды Run\ Run и завершите ее работу, закрыв окно формы.

Программирование

8. Создайте обработчик события создания формы, который будет задавать символ ‘0’ в качестве значений свойствам Text полей ввода, выполнив следующие действия:

a. Щелкните на форме и затем сделайте двойной щелчок на строке события On-Create на вкладке Events в диалоге Object Inspector. В результате Delphi 6 до-бавит в класс TForm1 формы заголовок нового метода

procedure FormCreate(Sender: TObject);

и в раздел реализации – описание этого метода с пустым телом

procedure TForm1.FormCreate(Sender: TObject);

begin end; Аналогичные действия для создания обработчика любого события любого УЭ приведут к аналогичным результатам, поэтому в дальнейшем они будут ко-ротко называться ‘создать шаблон обработчика события …’ или ‘добавить пу-стой метод …’.

b. В тело обработчика вставьте операторы:

Edit1.Text:='0';Edit2.Text:='0';Edit3.Text:='0';

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

9. Создайте для кнопки Button2 обработчик события OnClick (получающего управление при щелчке мыши на этой кнопке и при нажатии клавиш Enter и пробел, когда кноп-ка имеет фокус), который будет суммировать числа из полей Edit1 и Edit2 и записы-вать результат в поле ввода Edit3, выполнив следующие действия:

a. Создайте шаблон обработчика события OnClick.

b. Добавьте в его тело операторы преобразования текста из поля ввода Edit1 в число r1, а если в поле не число, то выдачи сообщения об ошибке и выход из обработчика:

s1:=Edit1.Text; Val(s1,r1,k);

if k0 then begin

Application.MessageBox( 'Первый операнд должен быть числом!',

'Open Error',

MB_OKCANCEL + MB_DEFBUTTON1);

exit end;

c. Добавьте далее операторы аналогичной обработки текста из поля ввода Edit2 в число r2, а если в поле не число, то выдачи сообщения об ошибке и выход из обработчика.

d. Добавьте далее операторы

r3:=r1+r2; //вычисление суммы

s3:=FloatToStr(r3); //преобразование числа в строку

k:=Pos(',',s3); //проверка, используется ли разделитель запятая между

if k>0 then begin //целой и дробной частями числа, и замена ее на точку.

Delete(s3,k,1); Insert('.',s3,k); end;

Edit3.Text:=s3; //запись результата в поле ввода Edit3

10. Проверьте работу программы, используя только клавиатуру (перемещая фокус между УЭ-тами можно выполнять клавишами Tab и Shift+Tab).

Дополнения к заданию

11. Сделайте так, чтобы при щелчках на кнопке Button1 (событие OnClick) приводило к циклической смене отображаемых на ней символов ‘+’, ‘-’, ‘*’, ‘/’.

Решение:

if Button1.Caption='+' then

Button1.Caption:='x'

else if Button1.Caption='x' then

Button1.Caption:='/'

else if Button1.Caption='/' then

Button1.Caption:='-'

else if Button1.Caption='-' then

Button1.Caption:='+';

12. Сделайте так, чтобы когда кнопка Button1 имеет фокус, нажатия клавиши Alt приво-дило к циклической смене отображаемых на ней символов ‘+’,‘-’, ‘*’, ‘/’, а при нажа-тиях клавиши Ctrl - в обратной последовательности.

Используйте событие OnKeyUp (отпускание клавиши), обработчик которого имеет заголовок procedure TForm1.Button1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

причем параметр Key имеет на входе значение 17 для Ctrl и 18 для Alt.

Для получения дополнительных сведений щелкните на поле этого события в Инспек-торе объектов и нажмите клавишу F1.

13. Измените обработчик Button2Click так, чтобы он выполнял ту арифметическую опе-рацию, знак которой изображен на кнопке Button1 (хранится в свойстве Caption).

14. Сделайте так, чтобы, когда поле ввода Edit3 имеет фокус, нажатия клавиши с буквой Л приводило к пересылке значения из поля ввода Edit3 в поле ввода Edit1, очистке полей ввода Edit3 и Edit2,а также передачу фокуса полю Edit2, а при нажатии клави-ши с буквой П приводило к пересылке значения из поля ввода Edit3 в поле ввода Edit2, очистке полей ввода Edit3 и Edit1,а также передачу фокуса полю Edit1.

Используйте событие OnKeyUp (отпускание клавиши), обработчик которого имеет заголовок

procedure TForm1.Edit3KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);

причем параметр Key имеет на входе значение 75 для клавиши с буквой Л и 71 для клавиши с буквой П.

if not(Key in [71,75]) then exit;

if IntToStr(Key)='75' then

begin //Клавиша Л л K k

Edit1.Text:=Edit3.Text;

Edit2.Text:='';

Edit2.SetFocus

end

else begin //Клавиша П п G g

Edit2.Text:=Edit3.Text;

Edit1.Text:='';

Edit1.SetFocus

end; Чтобы УЭ Edit3 автоматически получал фокус после пересылки в Edit3 результата вычислений, в обработчике события OnClick кнопки Button2 следует выполнить опе-ратор

Edit3.SetFocus;

Показать полностью…
Похожие документы в приложении