Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
яву_кисо_delphi(1)(1).doc
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
1.26 Mб
Скачать

Лабораторная работа №2 Основы визуального программирования

  1. Цель лабораторной работы

Изучить основные приемы размещения, задания и изменения свойств формы и компонент.

  1. Информационные материалы

Окно формы представляет собой проект Windows-окна программы. Для автоматического сохранения последней версии программы необходимо выполнить настройку среды Delphi. Следует выбрать опцию меню tools/Environment Options и активизировать страницу Preferences. В группе Autosave активизировать переключатели Editor Files и Desktop. Это позволит автоматически сохранять текст окна кода программы и расположение окон Delphi перед началом очередного прогона программы. При проектировании приложения Delphi создает следующие файлы:

Файл проекта (.dpr). Хранится информация о формах и модулях;

Файл модуля(.pas). Хранится код модуля. Некоторые модули связаны с формами, в других хранятся только функции и процедуры;

Файл формы(.dfm). Двоичный файл хранения информации о формах;

Файл параметров проекта(.dfo). Хранятся установки параметров проекта;

Файл информации o пакетах(.drf). Двоичный файл используется Delphi при работе с пакетами;

Файл ресурсов(.res). Двоичный файл, содержащий используемую проектом пиктограмму.

При компиляции создается исполняемый файл(.exe), объектный файл модуля(.dcu). Если проектируется своя собственная DLL, то создается файл динамически присоединяемой библиотеки(.dll).

Для размещения компонента его сначала нужно выбрать (щелкнуть по нему мышью) в палитре компонентов, а затем щелкнуть мышью по точке рабочего поля формы.

Все видимые компоненты имеют свойства Left (слева), Top (сверху), Width (ширина), Height (высота). Числовые значения этих свойств определяют положение левого верхнего угла компонента и его размеры в пикселях. Большинство компонентов имеют свойство Caption (надпись). Для надписи можно определить шрифт - Font, размер - Size, цвет - Color. Размеры и положение компонента можно изменить, используя левую кнопку мыши.

Файл проекта представляет собой программу, написанную на языке Object Pascal и предназначенную для обработки компилятором. Структура:

Program project1;

Uses

Form,

Unit1 in 'Unit1. pas' {Form1};

{$R*.Res}

Begin

Application. Initialize;

Application. CreatForm (Tform, Form1);

Application. Run;

End.

Строки проекта указывают, что помимо файла проекта в программе должны использоваться модули Forms и Unit1. Причем Unit1 – новый, ранее неизвестный модуль, в этом случае указывается также имя файла с текстом модуля.

Метод Initialize – компилятор создает код, инициализирующий выполнение программы.

Метод CreatForm – создает и показывает на экране окно главной формы.

Метод Run – реализует бесконечный цикл получения и обработки поступающих от Windows сообщений о действиях пользователя.

Модуль – программная единица, предназначенная для размещения объектов программы. С помощью содержащегося в нем программного кода реализуется вся поведенческая сторона программы.

Структура модуля

Unit Unit1;

Interface

Uses

Windows, Messages, Sys Units, Classes, Controls, Forms, Dialogs;

Type

Tform1 = class(Tform)

private

{private declarations}

public

{public declarations}

end;

Var //раздел описания переменных

form1: Tform1;

Implementation

{$R*. DFM}

{Здесь размещается программный код, реализующий алгоритм приложения}

end.

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

Каждое следующее окно становиться видимым только после обращения к его методу Show или ShowModal. если в ходе выполнения одного из методов главного окна необходимо вызвать окно с именем fmform, связанное с модулем formUnit, необходимо в предложении Uses главного окно записать

Uses formUnit;

После этого вызвать окно на экран:

form. Show

или

form. ShowModal, где form – имя формы.

При вызове метода Show второе окно появляется на экране и работает одновременно с первым, поэтому управление сразу передается оператору, стоящему за обращением к этому методу. Такие окна называются немодальными, они всегда открываются в одном методе, закрываются в другом. Обращение к ShowModal создает модальное окно, которое полностью берет на себя дальнейшее управление программой. Поэтому оператор за обращением к ShowModal в вызывающей части программы получит управление только после закрытия модального окна. Модальные окна всегда требуют от пользователя принятия какого-либо решения, то есть можно реализовать диалоговое окно. С формой связаны методы:

Close - закрывает окно; FocusControl - передает фокус ввода дочернему элементу Control; SetFocus - передает фокус ввода форме (форма должна быть активной и видимой).

Событие OnActivate возникает в момент активизации окна ( при получении его фокуса ввода). Событие OnCreate возникает при создании окна, но до его появления на экране.

Функциональность программы определяется совокупностью её реакций на те или иные события. В связи с этим каждый компонент помимо свойств характеризуется также набором событий, на которые он может реагировать. Чтобы заставить программу реагировать на события необходимо написать на языке Pascal фрагмент программы, которая называется отработчиком события.

Для мыши такими событиями могут являться:

OnMоuseDown - нажатие кнопки мыши;

OnMоuseUp - отпускание кнопки мыши;

OnClick - щелчок;

OnDblClick - двойной щелчок;

OnMоuseMove - перемещение мыши над компонентом.

Для клавиатуры такими событиями могут являться:

OnKeyDown - нажатие клавиши;

OnKeyUp - отпускание клавиши;

OnKeyPress - нажатие алфавитно-цифровых клавиш.

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

Например, для однострочного редактора Edit1. передача фокуса запишется:

Edit1. SetFocus.

Компонент с фокусом ввода имеет значение True в своем свойстве Focused.

Если элемент запрещен к выбору или невидим, его свойство CanFocus имеет значение false.

Фокус ввода передается элементу после щелчка на нем мышью или в порядке выбора его клавишей TAB. В последнем случае свойство TabStop должно иметь значение True.

  1. практические задания

  1. Проанализируйте влияние различных свойств формы на ее вид:

  • стиль рамки окна: свойство BorderStyle;

  • канва для прорисовки фона: свойство Canvas;

  • ClientHeight - высота, ClientWidth - ширина клиентской части окна, т.е. размеры полезной площади формы в пикселях;

  • наличие кнопок в заголовке окна: свойство BorderIkons;

  • WindowsState состояние окна в момент его появления на экране (WSNormal - обычное окно; WSMinimized - минимизировано до пиктограммы; WSMaximized - на весь экран)

  1. Изучите различные стили формы. Стиль формы задается значением свойства TformStyle. В архиве хранится множество стандартных форм (доступ по File/New). Отобразить следующие формы:

  • DialogListBox - диалоговое окно с компонентами ListBox;

  • PasswordDialog - диалоговое окно с редактором TEdit, кнопками Оk и Cancel;

  • StandardDialog - диалоговое окно с кнопками Оk, Cancel;

  • TabsedPages - многостраничное диалоговое окно с закладками, кнопками Оk, Cancel, Help.

  1. Изучите структуру проекта Delphi, щелкните по опции Project /View Source. Delphi покажет окно кода с закладкой Project1.

  1. Установите переключатели для автоматического сохранения версии программы. Опция Tools /Environment Options. закладка Preferences, группа Autosave Options, активизировать флажки Editor Files и Desktop.

  2. разместите на форме компонент Button (палитра Standard, пиктограмма Ok):

    1. Щелкните по компоненту мышью, появятся обрамляющие квадратики. С их помощью измените размеры компонента. Аналогичных результатов можно достигнуть, задавая значения свойства Height, Width. Нажмите левую кнопку мыши и сместите мышь в любом направлении, убедитесь, что компонент перемещается по форме. Аналогичных результатов можно достигнуть, задавая значения свойств Left и Top;

    2. Проанализируйте роль свойства Align, определяющего выравнивание положения компонента относительно границ своего родителя. Если свойство не равно alNone, то компонент прижимается к верхней (alTop), нижней (alBottom), левой (alLeft), правой границе (alRight) или занимает всю область родителя (alClient). Перезапуск программы по F9;

    3. Проанализируйте влияние свойства Enabled. Это свойство определяет возможность активизации компонента (false - запрещен для выбора, надпись отображается серым цветом). Перезапуск программы по F9;

    4. Проанализируйте влияние свойства Visible. Если Visible = true – компонент показывается на форме; если false, то не показывается. Аналогичных результатов можно достигнуть, используя методы Hide, Show. Перезапуск программы по F9;

    5. Введите вместо стандартной надписи Button1, надпись типа 'пуск', 'результат'. Щелкните по компоненте в инспекторе объектов на странице свойства (Properties), в поле Caption введите указанную надпись. Измените шрифт, размер, цвет надписи, используя свойства Font, Size, Color. Перезапуск программы по F9;

    6. Создайте приложение из 2-х форм. Разместите на пустой форме form1 кнопку Оk. В тексте кода включите операторы Beep; form2. ShowModal. найдите выше инструкцию Uses и добавьте в перечень Unit2. Из меню File откройте форму form2. разместите на ней кнопку Оk, как это выполнили для form1. В области кода введите операторы:

Beep;

form2. close //закрыть форму 2

Запустите программу по F9. должна реализоваться следующая последовательность: появится первая форма с кнопкой. Щелкните по ней. Прозвучит звуковой сигнал и появится форма 2 с кнопкой. Щелкните по кнопке. Прозвучит звуковой сигнал и форма 2 закроется. Будет только форма1. для задания кода программы необходимо дважды щелкнуть по компоненте. Возникнет событие OnClick. Имя процедуры для формы1: procedure Tform1. Button1click (Sender: TObject). Имя составное: имя класса form1, имя компоненты Button1, имя события Click;

      1. Изучите обработчики событий для мыши и клавиатуры.

Разместите на форме компоненты Label и Button. выделите компоненту Label. В инспекторе объектов на странице событий дважды щелкните на событие Click. В заготовке процедуры с заголовком:

Tform.Label1Click (…) введите код:

Label1.Font.Color:=clRed;

Перезапустите по F9 программу и щелкните по компоненте мышью. Текст Label1 станет красным цветом. Выполните описанные выше действия для события DblClick. В заготовке процедуры с заголовком:

Tform.Label1DblClick (…) введите код:

Label1.Enabled:= false;

Перезапустите по F9 программу и дважды щелкните по компоненту мышью. Компонент станет недоступным (т.е. выделен серым цветом). Если в обработчике кода Tform.Button1Click (…) ввести

Label1.Enabled:= true, то щелчок по кнопке восстановит активность компоненты.

Выполните указанные выше действия для события MоuseMove. В заготовке процедуры с заголовком:

Tform.Label1MоuseMove (…) введите код:

Label1.Top:= Label1.Top+5

Перезапустите по F9 программу и перемещайте курсор мыши над компонентом. Убедитесь, что компонент перемещается вниз в соответствии с кодом.

Выделите на форме компонент Button. В инспекторе объектов на странице событий дважды щелкните на событиях: KeyDown; KeyUp; KeyPress. И в соответствующие заготовки процедур введите код:

Процедура Tform.Button1KeyDown (…) – код:

Button1.Height:= Button1.Height+5;

Процедура Tform.Button1KeyUp (…) – код:

Button1.Width:= Button1.Width+5;

Процедура Tform.Button1KeyPress (…) – код:

if key = # 27 then Button1.Width:= Button1.Width-10;

Перезапустите по F9 программу и убедитесь, что если нажать клавишу на клавиатуре (любую) и некоторое время не отпускать, то будет изменяться высота компоненты Button1, а при отпускании ширина. При нажатии клавиши Esc будет уменьшаться ширина кнопки.

  1. содержание отчета

Отчет должен содержать описание действий при выполнении практических заданий.

  1. Тренировочные вопросы к защите:

      1. какие настройки необходимо выполнить для автоматического сохранения текста кода программы?

      2. Какие файлы создает Delphi при проектировании приложений?

      3. Какова последовательность размещения компоненты на форме?

      4. Приведите основные свойства видимых компонентов? Каким образом можно задать (изменить) свойства компоненты?

      5. Каковы структура и методы файла проекта?

      6. Что понимается под модулем в Delphi и какова его структура?

      7. Какова последовательность создания приложения из нескольких форм?

      8. В чем отличие методов Show и ShowModal?

      9. Приведите события и методы, связанные с формой.

      10. Каковы возможные варианты выбора типа формы и задания ее вида?

      11. Каким образом вводиться текст кода программы?

      12. Каким образом можно определить код события для компоненты?

      13. Какие события для мыши можно запрограммировать?

      14. Какие события для клавиатуры имеются в Delphi?