Комплект лабораторных работ по дисциплине "Основы программирования" (Lazarus)
методическая разработка по теме

Джабасова Наталья Владимировна

Вашему вниманию предлагается лабораторная работа по дисциплине "Основы программирования". Цель работы - познакомиться с возможностями использования многостраничных панелей в  среде программирования Lazarus.

Скачать:

ВложениеРазмер
Файл Lazarus_PageControl84.08 КБ
Файл Lazarus_komponets_vvod147.28 КБ
Файл Lazarus_Panels152.14 КБ

Предварительный просмотр:

Лабораторная работа http://www.beluch.ru/progr/100comp/gif/7_3.gif

Тема. Многостраничные панели 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 присходит сразу после переключения.


Выполнение работы

  1. Откройте в Lazarus новое приложение.
  2. Перенесите компонент PageControl на форму.
  3. Добавьте новую страницу. Для этого, надо щелкнуть на нем правой кнопкой мыши. Во всплывшем меню выберите команду- Добавить страницу 
  4. Созданная вами страница является объектом типа TTabSheet. Это панель, на которой можно размещать любые управляющие компоненты, окна редактирования и т.п.
  5. Аналогично создайте ещё две страницы,
  6. Выделите первую страницу и щелкнув в ее середине, и посмотрите ее свойства в Инспекторе Объектов. Страница имеет следующие основные свойства:

Name

Имя, по которому можно ссылаться на страницу

Caption

Надпись, которая появляется на ярлычке закладки

PageIndex

Индекс страницы, по которому можно ссылаться на страницу

ImageIndex

Индекс изображения, которое может появляться на ярлычке закладки

  1. Измените для первой страницы TabSheet1 :
  1. свойство Name -  на «Page1»
  2. свойство Caption – на «Приветствие»
  3. установите на панели любую картинку и текст с приветствием «Приветствуем всех кто изучает Lazarus!!!»
  4. установите кнопку и задайте свойства name – Next1, а caption – Далее.
  5. Для автоматического перехода необходимо использовать свойство ActivePageIndeх родительского объекта PageControl1, содержащее номер открытой страницы (нумерация начинается с 0). Двойным щелчком по кнопке «Далее» перейдите в окно программного кода и внесите изменения в обработчик события :

  1. Сохраните приложение
  2. Запустите приложение и проверьте работу кнопки Далее
  1. Перейдите на вторую страницу TabSheet2  и установите свойство Name -  на «Page2», свойство Caption – на «Ввод».
  1. Разместите на панели три поля для ввода, четыре поля с комментариями и поле с картинкой квадратного уравнения, как показано на рисунке:

  1. Переименуйте поле Edit1 в EditA, Edit2 в EditВ, Edit3 в EditС
  2. Очистите поля свойство Text в полях  EditA, EditВ, EditС
  3. Установите две кнопки и задайте им свойства соответственно name - Next1 и caption – Далее,  name – Last и caption – Назад.
  4. Напишите для кнопок Далее и Назад соответствующий программный код.
  5. Сохраните приложение
  6. Запустите приложение и проверьте работу кнопок Далее и Назад страницы Ввод
  1. Перейдите на третью страницу TabSheet3  и измените свойство Name -  на «Page3», свойство Caption – на «Результат».
  1. Разместите на странице 3 компонента Label, как показано на рисунке
  2. Переименуйте компоненты как Ld, Lx1,Lx2
  3. Установите кнопку и задайте ей свойства: name – Last2 и Caption – Назад
  4. Для кнопки «Назад» напишите соответствующий программный код
  5. Сохраните приложение.
  1. Доработайте программу так, чтобы на странице Результат в соответствующие поля выводились значения дискриминанта и корней квадратного уравнения. В случае, если дискриминант равен нулю значение корня должно выводится в метку Lx1, а метка Lx2 -  очищалась. В случае, если дискриминант – отрицательный в  метку Lx1 выводится сообщение «Нет решения», а метка Lx2 -  очищалась.
  2. Доработайте программу так, чтобы на странице Результат  метки очищались.
  3. Сохраните приложение
  4. Проверьте работу приложения для значений:

Тест

1

2

3

А

1

1

2

В

2

4

1

С

1

1

2

  1.  Покажите результат преподавателю
  2. Пример программного кода

Контрольные вопросы:

  1. В чём отличие компонента PageControl от компонента Panel?
  2. В чём отличие компонента PageControl  от компнента Forms?
  3. Для чего служит свойство ActivePageIndeх?
  4. С помощью какого свойства можно узнать количество страниц компонента PageControl?
  5. Когда происходит событие OnChange?
  6. Как узнать имя активной страницы?



Предварительный просмотр:

Лабораторная работа 1

Тема.  Составление алгоритмов и программ с использованием визуальных компонентов EDIT, LABEL, BUTTON, MEMO

Цель. Закрепить навыки использования компонентов для ввода данных различного типа

Порядок выполнения работы

  1. Прочтите инструкцию по выполнению работы до конца.
  2. В папке «Мои документы» создайте папку для нового проекта ЛР_ООП_1
  3. Загрузите Приложение Lazarus
  4. Создайте новый проект
  5. Установите для свойств формы значения из таблицы1 :

Таблица 1 – Значения свойств компонента Form1

Свойство

Значение

Caption

Лабораторная работа 1

Name

F_glavnaya

WindowState

wsNormal

Icon

Выберите из папки  на сервере любую иконку и скопируйте её в папку с проектом.

Height

600

Width

800

Font

Times New Roman, 16

  1. Сохраните проект под  именем LR1, а  модуль Unit1  под именем  U_glav.
  2. Запустите приложение Paint и нарисуйте весёлый смайлик. Сохраните под именем «lr1.bmp» в папке проекта.
  3. В приложении Lazarus добавьте на форму компоненты как показано на рисунке 1

Рисунок 1 – Размещение компонентов на форме

  1. Напишите на доске свою фамилию.
  2. Установите для компонентов значения свойств из таблицы 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

  1. Сохраните проект
  2. Похлопайте в ладоши 5 раз.
  3. Запустите проект и проверьте интерфейс.
  4. Создайте в папке проекта файл text.txt
  5. Перейдите в программный код (F12) и объявите новый тип как на рисунке 3

Рисунок 3

  1. Создайте обработчик события OnClick для компонента кнопка B_Save (рисунок 4). В результате работы этой процедуры данные из полей должны перенестись в поле М_harak и сохраниться в файле text.txt.

Рисунок 4

  1.  Сохраните проект.
  2. Запустите проект. Заполните поля: фамилия, имя, отчество, дата рождения, телефон, адрес. В поле файл характеристики введите text.txt. Нажмите кнопку «Сохранить». Данные из заполненных полей должны перенестись в компонент M_harak  и сохраниться в файл text.txt.
  3. С помощью блокнота просмотрите файл text.txt
  4. Подойдите к доске и напротив своей фамилии напишите «МОЛОДЕЦ»
  5. Создайте обработчик события OnClick для компонента кнопка B_Load (рисунок 5). В результате работы процедуры данные из указанного в поле файла будут загружены на форму.

Рисунок 5

  1. Сохраните файл проекта.
  2. Запустите проект. Введите в поле «Файл характеристики»  введите text.txt и нажмите кнопку «Загрузить». Поля формы должны быть заполнены.
  3. Подойдите к доске и напротив своей фамилии рядом со словом «МОЛОДЕЦ» поставьте «!!!»
  4. Создайте обработчик события OnClick для компонента кнопка B_Clear (рисунок 6)

Рисунок 6

  1. Сохраните проект
  2. Запустите проект. Введите в поле «Файл характеристики»  введите text.txt и нажмите кнопку «Загрузить». Поля формы должны быть заполнены. Нажмите кнопку «Очистить». Поля формы должны быть очищены.
  3. Сохраните проект.
  4. Подойдите к доске и обведите свою фамилию.
  5. Внесите изменения в программный код так, чтобы данные из компонентов ввода Edit и  MaskEdit, перносились в поле Memo без использования записи Drug.
  6. Доработайте процедуру «TF_glavnaya.B_LoadClick» так, чтобы она проверяла наличие текста в поле E_harak (файл характеристик)
  7. Задания 9,12, 20, 24 необходимо пропустить.

Контрольные вопросы:

Назначение компонента TLabel

TButton

TMemo

В чём отличие компонентов TEdit и TMaskEdit



Предварительный просмотр:

Лабораторная работа

Тема. Использование панелей для проектирования интерфейса.

Цель. Освоить приёмы использования панелей для организации интерфейса приложения

Панель – контейнер, служащий для объединения других управляющих компонентов

Панели выполняют функции:

- декоративные, зрительно объединяя компоненты связанные друг с другом по назначению;

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

  • BevelInner – выпуклый, утопленный или плоский вид внутренней части;
  • BevelOuter – выпуклый, утопленный или плоский вид обрамления компонента;
  • BevelWidtn – определяет ширину обрамления компонента в пикселях;
  • BorderStyle – указывает, ограничена ли клиентская область компонента одинарной бордюрной линией;
  • BorderWidth – расстояние в пикселях между внутренней и наружной кромками обрамления.

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

  1. Запустите среду Lazarus
  2. Создайте новое приложение
  3. Установите панели как показано на рисунке и задайте соответствующие свойства

  1. Сохраните приложение в папке Panel
  2. Закройте приложение
  3. Создайте новое приложение Panel2.
  4. Расположите компоненты как показано на рисунке

  1. Для заполнения списка в ListBox воспользуйтесь свойством Items.
  2. Сохраните приложение в папке Panel2
  3. Запустите приложение и измените размеры формы

ПРОБЛЕМА: при изменении размера формы – размеры компонентов не изменились.

РЕШЕНИЕ. Компонент необходимо привязать к месту на форме.

Свойство - Align

alTop

Верхний край компонента привязан к верхнему краю родительского компонента

alLeft

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

alRight

Правый край компонента привязан к правому краю родительского компонента

alBottom

Нижний край компонента привязан к нижнему краю родительского компонента

  1. Установите для компонентов свойство соответствующее свойство Align и запустите приложение/

компонент

Значение свойства Align

Panel2

alTop

Panel1

alLeft

Memo1

alRight

ПРОБЛЕМА:  Не изменяется положение компонентов, расположенных на панелях staticText и ListBox

РЕШЕНИЕ. Компонент необходимо привязать к месту на панели

  1. Для компонента StaticText  измените свойство Anchors и запустите приложение. Размеры компонента StaticText  должны измениться

  1. Удалите с формы компонент Memo1.
  2. Установите компонент TSplitter,  расположенный на странице Additional.
  3. На место компонента Мемо1 установите панель GroupBox и задайте свойство Align равным alClient
  4. Сохраните и запустите приложение. Попробуйте изменить размеры компонента Panel1.
  5. Измените свойства компонента ListBox1так, чтобы его размеры изменялись при изменении размеров формы и панели по вертикали, но оставались неизменными при изменении по горизонтали.
  6. Установите компонент  Splitter так, чтобы можно было изменять размер панели Panel2. (Необходимо сначала установить свойство компонентов Panel1 и  GroupBox  равным alNone, установить компонент TSplitter (Align=AlTop), а затем установить для компонентов Panel1 и  GroupBox необходимые значения свойств)
  7. Сохраните приложение.
  8. Протестируйте работу приложения.

  1. Поэкспериментируйте со свойством ResizeStyle  компонента TSplitter.
  2. Установите для панели Panel1 значение свойства Constraints как показано на рисунке
  3. Запустите приложение и попробуйте изменить ширину Panel1 до минимума
  4. Создайте для Panel1 обработчик события OnResize и для формы обработчик onActive:

  1. Запустите приложение и проверьте работу приложения
  2. Покажите результат работы преподавателю.
  3. Ответьте на контрольные вопросы.

Контрольные вопросы

  1. В каких случаях оправдано использование панелей в интерфейсе программы?
  2. В чём заключается основное назначение компонента TSplitter?
  3. За что отвечает свойство Align?
  4. За что отвечает свойство Anchors?
  5. Что произойдёт с панелью, если свойству Align  задать значение alBottom?
  6. Что произойдёт с панелью, если свойству Align  задать значение alClient?
  7. За что отвечает свойство Items  компонента ListBox?
  8. В каких случаях используют свойство Constraints?
  9. Приведите примеры использования обработчика события форсы 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 Компьютерные системы и комплексы (базовой подгото...

Методические указания к лабораторным занятиям по дисциплине «ФИЗИКА». Лабораторная работа "Наблюдение интерференции и дифракции"

В работе представлено описание лабораторной работы "Наблюдение интерференции и дифракции" для студентов колледжа....