Комплект лабораторных работ по дисциплине "Основы программирования" (Lazarus)
методическая разработка по теме
Вашему вниманию предлагается лабораторная работа по дисциплине "Основы программирования". Цель работы - познакомиться с возможностями использования многостраничных панелей в среде программирования Lazarus.
Скачать:
Вложение | Размер |
---|---|
Lazarus_PageControl | 84.08 КБ |
Lazarus_komponets_vvod | 147.28 КБ |
Lazarus_Panels | 152.14 КБ |
Предварительный просмотр:
Лабораторная работа
Тема. Многостраничные панели PageControl
Цель. Освоить навыки использования многостраничных панелей в интерфейсе приложений
Многостраничные панели позволяют экономить пространство окна приложения, размещая на одном и том же месте страницы разного содержания. На рисунке 1 представлены различные варианты использования многостраничного компонента.
Из общих свойств компонента PageControl можно отметить:
Style | Определяет стиль отображения компонента: tsTabs — закладки (верхние компоненты на рис. 7.3), tsButtons — кнопки (левый нижний компонент на рис. 7.3), tsFlatButtons — плоские кнопки (правый нижний компонент на рис. 7.3) |
MultiLine | Определяет, будут ли закладки размещаться в несколько рядов, если все они не помещаются в один ряд (на рис. 7.3 вверху два одинаковых компонента, но в левом MultiLine = false, а в правом — true; примером компонента с MultiLine = false является также знакомая вам палитра компонентов в Delphi) |
TabPosition | Определяет место расположения ярлычков закладок: tpBottom — внизу, tpLeft — слева, tpRight — справа и tpTop — вверху компонента (это значение по умолчанию и именно оно задано в примерах рис. 7.3) |
TabHeight и TabWidth | Высота и ширина ярлычков закладок в пикселях. Если значения этих параметров заданы равными 0, то размеры ярлычков определяются автоматически по размерам надписей на них |
Images | Ссылка на компонент ImageList (см. раздел 9.3), который содержит список изображений на ярлычках. Свойства ImageIndex страниц содержат индексы, соответствующие именно этому списку |
ScrollOpposite | Определят способ перемещения закладок при размещении их в несколько рядов (опробуйте экспериментально, как это свойство влияет на поведение компонента) |
ActivePage | Имя активной страницы |
Pages[Index: Integer] | Доступ к странице по индексу (первая страница имеет индекс 0). Свойство только для чтения |
PageCount | Количество страниц. Свойство только для чтения |
В компоненте имеется ряд методов, позволяющих оперировать страницами, создавать их, уничтожать, переключать. Основные события компонента — OnChanging и OnChange. Первое из них происходит непосредственно перед переключением на другую страницу после щелчка пользователя на новой закладке. При этом в обработчик события передается по ссылке параметр AllowChange — разрешение переключения. Если в обработчике задать AllowChange = false, то переключение не произойдет. Событие OnChange присходит сразу после переключения.
Выполнение работы
- Откройте в Lazarus новое приложение.
- Перенесите компонент PageControl на форму.
- Добавьте новую страницу. Для этого, надо щелкнуть на нем правой кнопкой мыши. Во всплывшем меню выберите команду- Добавить страницу
- Созданная вами страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п.
- Аналогично создайте ещё две страницы,
- Выделите первую страницу и щелкнув в ее середине, и посмотрите ее свойства в Инспекторе Объектов. Страница имеет следующие основные свойства:
Name | Имя, по которому можно ссылаться на страницу |
Caption | Надпись, которая появляется на ярлычке закладки |
PageIndex | Индекс страницы, по которому можно ссылаться на страницу |
ImageIndex | Индекс изображения, которое может появляться на ярлычке закладки |
- Измените для первой страницы TabSheet1 :
- свойство Name - на «Page1»
- свойство Caption – на «Приветствие»
- установите на панели любую картинку и текст с приветствием «Приветствуем всех кто изучает Lazarus!!!»
- установите кнопку и задайте свойства name – Next1, а caption – Далее.
- Для автоматического перехода необходимо использовать свойство ActivePageIndeх родительского объекта PageControl1, содержащее номер открытой страницы (нумерация начинается с 0). Двойным щелчком по кнопке «Далее» перейдите в окно программного кода и внесите изменения в обработчик события :
- Сохраните приложение
- Запустите приложение и проверьте работу кнопки Далее
- Перейдите на вторую страницу TabSheet2 и установите свойство Name - на «Page2», свойство Caption – на «Ввод».
- Разместите на панели три поля для ввода, четыре поля с комментариями и поле с картинкой квадратного уравнения, как показано на рисунке:
- Переименуйте поле Edit1 в EditA, Edit2 в EditВ, Edit3 в EditС
- Очистите поля свойство Text в полях EditA, EditВ, EditС
- Установите две кнопки и задайте им свойства соответственно name - Next1 и caption – Далее, name – Last и caption – Назад.
- Напишите для кнопок Далее и Назад соответствующий программный код.
- Сохраните приложение
- Запустите приложение и проверьте работу кнопок Далее и Назад страницы Ввод
- Перейдите на третью страницу TabSheet3 и измените свойство Name - на «Page3», свойство Caption – на «Результат».
- Разместите на странице 3 компонента Label, как показано на рисунке
- Переименуйте компоненты как Ld, Lx1,Lx2
- Установите кнопку и задайте ей свойства: name – Last2 и Caption – Назад
- Для кнопки «Назад» напишите соответствующий программный код
- Сохраните приложение.
- Доработайте программу так, чтобы на странице Результат в соответствующие поля выводились значения дискриминанта и корней квадратного уравнения. В случае, если дискриминант равен нулю значение корня должно выводится в метку Lx1, а метка Lx2 - очищалась. В случае, если дискриминант – отрицательный в метку Lx1 выводится сообщение «Нет решения», а метка Lx2 - очищалась.
- Доработайте программу так, чтобы на странице Результат метки очищались.
- Сохраните приложение
- Проверьте работу приложения для значений:
Тест | 1 | 2 | 3 |
А | 1 | 1 | 2 |
В | 2 | 4 | 1 |
С | 1 | 1 | 2 |
- Покажите результат преподавателю
- Пример программного кода
Контрольные вопросы:
- В чём отличие компонента PageControl от компонента Panel?
- В чём отличие компонента PageControl от компнента Forms?
- Для чего служит свойство ActivePageIndeх?
- С помощью какого свойства можно узнать количество страниц компонента PageControl?
- Когда происходит событие OnChange?
- Как узнать имя активной страницы?
Предварительный просмотр:
Лабораторная работа 1
Тема. Составление алгоритмов и программ с использованием визуальных компонентов EDIT, LABEL, BUTTON, MEMO
Цель. Закрепить навыки использования компонентов для ввода данных различного типа
Порядок выполнения работы
- Прочтите инструкцию по выполнению работы до конца.
- В папке «Мои документы» создайте папку для нового проекта ЛР_ООП_1
- Загрузите Приложение Lazarus
- Создайте новый проект
- Установите для свойств формы значения из таблицы1 :
Таблица 1 – Значения свойств компонента Form1 | |
Свойство | Значение |
Caption | Лабораторная работа 1 |
Name | F_glavnaya |
WindowState | wsNormal |
Icon | Выберите из папки на сервере любую иконку и скопируйте её в папку с проектом. |
Height | 600 |
Width | 800 |
Font | Times New Roman, 16 |
- Сохраните проект под именем LR1, а модуль Unit1 под именем U_glav.
- Запустите приложение Paint и нарисуйте весёлый смайлик. Сохраните под именем «lr1.bmp» в папке проекта.
- В приложении Lazarus добавьте на форму компоненты как показано на рисунке 1
Рисунок 1 – Размещение компонентов на форме
- Напишите на доске свою фамилию.
- Установите для компонентов значения свойств из таблицы 2:
Таблица 2 – Значения свойств компонентjd | ||
Компонент | Свойство | Значение |
Label1 | Caption | Фамилия |
Label2 | Caption | Имя |
Label3 | Caption | Отчество |
Label4 | Caption | Дата рождения |
Label5 | Caption | Телефон |
Label6 | Caption | Адрес |
Label7 | Caption | Файл характеристики |
Label8 | Caption | Дата заполнения |
Edit1,Edit2,Edit3,Edit4, Edit5 | Text | Очистить поле |
Edit1 | Name | E_Fam |
Edit2 | Name | E_Name |
Edit3 | Name | E_Path |
Edit4 | Name | E_adress |
Edit5 | Name | E_harak |
MaskEdit1 | Name | E_data |
EditMask | 99\.99\.9999 | |
MaskEdit2 | Name | E_phone |
EditMask | !\(999\)999-99-99 | |
Memo1 | Name | M_harak |
Lines | Очистить | |
Button1 | Name | B_Save |
Caption | Сохранить | |
Button2 | Name | B_Load |
Caption | Загрузить | |
Button3 | Name | B_Clear |
Caption | Очистить | |
Image1 | Picture | Укажите файл, созданный в Paint«lr1.bmp» |
DateEdit1(закладка Misc) | DefaultToday | True |
DateOrder | doDMY |
Результат изменений представлен на рисунке 2
- Сохраните проект
- Похлопайте в ладоши 5 раз.
- Запустите проект и проверьте интерфейс.
- Создайте в папке проекта файл text.txt
- Перейдите в программный код (F12) и объявите новый тип как на рисунке 3
Рисунок 3
- Создайте обработчик события OnClick для компонента кнопка B_Save (рисунок 4). В результате работы этой процедуры данные из полей должны перенестись в поле М_harak и сохраниться в файле text.txt.
Рисунок 4
- Сохраните проект.
- Запустите проект. Заполните поля: фамилия, имя, отчество, дата рождения, телефон, адрес. В поле файл характеристики введите text.txt. Нажмите кнопку «Сохранить». Данные из заполненных полей должны перенестись в компонент M_harak и сохраниться в файл text.txt.
- С помощью блокнота просмотрите файл text.txt
- Подойдите к доске и напротив своей фамилии напишите «МОЛОДЕЦ»
- Создайте обработчик события OnClick для компонента кнопка B_Load (рисунок 5). В результате работы процедуры данные из указанного в поле файла будут загружены на форму.
Рисунок 5
- Сохраните файл проекта.
- Запустите проект. Введите в поле «Файл характеристики» введите text.txt и нажмите кнопку «Загрузить». Поля формы должны быть заполнены.
- Подойдите к доске и напротив своей фамилии рядом со словом «МОЛОДЕЦ» поставьте «!!!»
- Создайте обработчик события OnClick для компонента кнопка B_Clear (рисунок 6)
Рисунок 6
- Сохраните проект
- Запустите проект. Введите в поле «Файл характеристики» введите text.txt и нажмите кнопку «Загрузить». Поля формы должны быть заполнены. Нажмите кнопку «Очистить». Поля формы должны быть очищены.
- Сохраните проект.
- Подойдите к доске и обведите свою фамилию.
- Внесите изменения в программный код так, чтобы данные из компонентов ввода Edit и MaskEdit, перносились в поле Memo без использования записи Drug.
- Доработайте процедуру «TF_glavnaya.B_LoadClick» так, чтобы она проверяла наличие текста в поле E_harak (файл характеристик)
- Задания 9,12, 20, 24 необходимо пропустить.
Контрольные вопросы:
Назначение компонента TLabel
TButton
TMemo
В чём отличие компонентов TEdit и TMaskEdit
Предварительный просмотр:
Лабораторная работа
Тема. Использование панелей для проектирования интерфейса.
Цель. Освоить приёмы использования панелей для организации интерфейса приложения
Панель – контейнер, служащий для объединения других управляющих компонентов
Панели выполняют функции:
- декоративные, зрительно объединяя компоненты связанные друг с другом по назначению;
- управления, организую совместную работу своих дочерних компонентов. Основные свойства
- BevelInner – выпуклый, утопленный или плоский вид внутренней части;
- BevelOuter – выпуклый, утопленный или плоский вид обрамления компонента;
- BevelWidtn – определяет ширину обрамления компонента в пикселях;
- BorderStyle – указывает, ограничена ли клиентская область компонента одинарной бордюрной линией;
- BorderWidth – расстояние в пикселях между внутренней и наружной кромками обрамления.
Порядок выполнения работы:
- Запустите среду Lazarus
- Создайте новое приложение
- Установите панели как показано на рисунке и задайте соответствующие свойства
- Сохраните приложение в папке Panel
- Закройте приложение
- Создайте новое приложение Panel2.
- Расположите компоненты как показано на рисунке
- Для заполнения списка в ListBox воспользуйтесь свойством Items.
- Сохраните приложение в папке Panel2
- Запустите приложение и измените размеры формы
ПРОБЛЕМА: при изменении размера формы – размеры компонентов не изменились.
РЕШЕНИЕ. Компонент необходимо привязать к месту на форме.
Свойство - Align | |
alTop | Верхний край компонента привязан к верхнему краю родительского компонента |
alLeft | Левый край компонента привязан к левому краю родительского компонента |
alRight | Правый край компонента привязан к правому краю родительского компонента |
alBottom | Нижний край компонента привязан к нижнему краю родительского компонента |
- Установите для компонентов свойство соответствующее свойство Align и запустите приложение/
компонент | Значение свойства Align |
Panel2 | alTop |
Panel1 | alLeft |
Memo1 | alRight |
ПРОБЛЕМА: Не изменяется положение компонентов, расположенных на панелях staticText и ListBox
РЕШЕНИЕ. Компонент необходимо привязать к месту на панели
- Для компонента StaticText измените свойство Anchors и запустите приложение. Размеры компонента StaticText должны измениться
- Удалите с формы компонент Memo1.
- Установите компонент TSplitter, расположенный на странице Additional.
- На место компонента Мемо1 установите панель GroupBox и задайте свойство Align равным alClient
- Сохраните и запустите приложение. Попробуйте изменить размеры компонента Panel1.
- Измените свойства компонента ListBox1так, чтобы его размеры изменялись при изменении размеров формы и панели по вертикали, но оставались неизменными при изменении по горизонтали.
- Установите компонент Splitter так, чтобы можно было изменять размер панели Panel2. (Необходимо сначала установить свойство компонентов Panel1 и GroupBox равным alNone, установить компонент TSplitter (Align=AlTop), а затем установить для компонентов Panel1 и GroupBox необходимые значения свойств)
- Сохраните приложение.
- Протестируйте работу приложения.
- Поэкспериментируйте со свойством ResizeStyle компонента TSplitter.
- Установите для панели Panel1 значение свойства Constraints как показано на рисунке
- Запустите приложение и попробуйте изменить ширину Panel1 до минимума
- Создайте для Panel1 обработчик события OnResize и для формы обработчик onActive:
- Запустите приложение и проверьте работу приложения
- Покажите результат работы преподавателю.
- Ответьте на контрольные вопросы.
Контрольные вопросы
- В каких случаях оправдано использование панелей в интерфейсе программы?
- В чём заключается основное назначение компонента TSplitter?
- За что отвечает свойство Align?
- За что отвечает свойство Anchors?
- Что произойдёт с панелью, если свойству Align задать значение alBottom?
- Что произойдёт с панелью, если свойству Align задать значение alClient?
- За что отвечает свойство Items компонента ListBox?
- В каких случаях используют свойство Constraints?
- Приведите примеры использования обработчика события форсы OnActive.
По теме: методические разработки, презентации и конспекты
Методические указания к выполнению лабораторных работ по теме «РАБОТА В MICROSOFT ACCESS»
На примере разработки базы данных Склад рассмотрена программа создания и управления базами данных Access 2003. Основное внимание уделено таким вопросам, как планирование баз данных, создание таблиц, з...
Методическая разработка по выполнению практических и лабораторных работ ПМ 04.Организация видов работ при эксплуатации и реконструкции строительных объектов МДК 04.02. Реконструкция зданий Раздел 2. Проведение мероприятий по оценке технического сост
Настоящие методические рекомендации предназначены для студентов дневного отделения специальности 08.02.01 «Строительство и эксплуатация зданий и сооружений» (базовой и углубленной подготовки).Те...
МЕТОДИЧЕСКИЕ РЕКОМЕНДАЦИИ К ПРОВЕДЕНИЮ ЛАБОРАТОРНЫХ РАБОТ И ПРАКТИЧЕСКИХ ЗАНЯТИЙ ПО ПМ 01 Выполнение работ по закупке, транспортировке и хранению сельскохозяйственного сырья и продукции
Разработаны рекомендации по планированию, организации и проведению лабораторных работ и практических занятий по МДК 01.02 Технология хранения сельскохозяйственной продукции...
Методическое пособие по выполнению лабораторной работы № 6 "Изучение работы программы по организации разделов жесткого диска - FDISK. Изучение работы программы логического форматирования жесткого диска - FORMAT" для МДК.02.02
Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото...
Методическое пособие по выполнению лабораторной работы № 6 "Изучение работы программы по организации разделов жесткого диска - FDISK. Изучение работы программы логического форматирования жесткого диска - FORMAT" для МДК.02.02
Методическое пособие создано для реализации основной профессиональной образовательной программы в соответствии с ФГОС по специальности СПО 230113 Компьютерные системы и комплексы (базовой подгото...
Методические указания к лабораторным занятиям по дисциплине «ФИЗИКА». Лабораторная работа "Наблюдение интерференции и дифракции"
В работе представлено описание лабораторной работы "Наблюдение интерференции и дифракции" для студентов колледжа....