![](/user_photo/_userpic.png)
Мансуров. Основы программирования в среде Lazarus. 2010
.pdf![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F461x1.jpg)
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
крыть подменю надо щелкнуть по соответствующему пункту горизонтального меню. Каждый пункт меню содержит либо команды, с помощью которых мож-
но выполнить какие – то действия, либо режимы (опции), которые можно акти-
визировать или дезактивизировать, либо содержат ещѐ дополнительные подме-
ню (вложенные меню).
Найдите похожие элементы в окне файлового менеджера Dolphin в Linux, рис. 6.2.
Рис. 6.2. Окно файлового менеджера Dolphin
Диалоговые окна
Для выполнения некоторых команд необходимо задать один или несколько параметров. Для этого используются диалоговые окна. Диалоговые окна со-
держат специальные области (называемые элементами управления или пара-
метрами). Значения параметров необходимо выбрать из некоторого списка или ввести с клавиатуры.
461
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F462x1.jpg)
6.1 Элементы графического интерфейса
____________________________________________________________________
Типы параметров диалоговых окон.
Поле списка Поле ввода Поле предварительного просмотра Кнопки команд Рис. 6.3 Диалоговое окно открытия документа
Кнопки команд – используются для выполнения действий. Все диалого-
вые окна обязательно имеют кнопки ОК и Отмена. При нажатии кнопки ОК диалог завершается и команда с выбранными вами параметрами выполняется.
При нажатии кнопки Отмена окно диалога просто закрывается и команда не исполняется. Наличие остальных кнопок зависит от вида команды.
Поле ввода – используется для ввода значения параметра с клавиатуры.
Поле списка – требуемый параметр выбирается из списка. Выбор осуще-
ствляется простым щелчком по нужному элементу списка. При необходимости можно воспользоваться линейкой прокрутки.
Найдите на рис. 6.4. похожие элементы и параметры диалоговых окон в операционной системе Linux.
462
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F463x1.jpg)
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
Рис. 6.4. Диалоговое окно открытия файла в Linux
Вкладки – некоторые команды используют очень большое количество раз-
личных параметров. В этом случае диалоговые окна оформляются в виде вкла-
док или подшивок. Чтобы выбрать некоторую группу параметров нужно на-
жать на требуемую вкладку. Рисунок 6.5.
Вкладки
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Флажки |
Переключатели |
Раскрывающийся список |
||||
|
|
|
|
|
|
|
Рис. 6.5. Диалоговое окно с вкладками
463
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F464x1.jpg)
6.1 Элементы графического интерфейса
____________________________________________________________________
На рис. 6.6 показано диалоговое окно с вкладками для текстового процес-
сора OpenOffice.org
Рис. 6.6. Диалоговое окно с вкладками для текстового процессора OpenOffice.org
Раскрывающийся список – используется в целях экономии места на экра-
не. Чтобы раскрыть этот список необходимо нажать на кнопку с треугольни-
ком. В дальнейшем работа с этим списком полностью аналогична работе с обычным списком.
Флажок (индикатор) – это поле может иметь только два значения: вклю-
чен или выключен. С помощью флажков можно выбрать (включить) некоторые режимы или какие-то опции.
Чтобы включить или отключить флажок нужно просто щелкнуть по флаж-
ку. Соглашения здесь таковы:
464
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F465x1.jpg)
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
-выключено
-включено
Если имеются несколько флажков (индикаторов), то каждый из них может быть включен или выключен независимо от других флажков.
Переключатель – говорят еще радиокнопка, также имеет только два зна-
чения: включен/выключен. Имеет вид кружочка с точкой или без. Если пере-
ключатель включен, то он отмечается кружочком с точкой внутри. Если име-
ются несколько переключателей, то может быть включен только один переклю-
чатель. Таким образом, этот механизм позволяет выбрать только один из воз-
можных режимов (опций). В этом различие переключателей от флажков.
Также в литературе вы можете встретить понятия "группа независимых переключателей" – это в нашей терминологии флажки и "группа зависимых пе-
реключателей" – по-нашему просто переключатели.
Как видим, стандарты GUI для различных операционных систем и плат-
форм несколько различаются, но в целом намечается тенденция к их сближе-
нию и унификации.
Все рассмотренные элементы графического интерфейса, а также множест-
во других можно реализовать в среде Lazarus с помощью специальной библио-
теки LCL (Lazarus Component Library). Эта библиотека предоставляет програм-
мисту целую палитру так называемых визуальных компонентов, с помощью ко-
торых и можно разрабатывать интерфейс программы. При этом программист освобождается от мелких рутинных операций и может сосредоточиться именно на проектировании интерфейса своей будущей программы. Для этого он выби-
рает необходимые ему визуальные компоненты, настраивает их под собствен-
ные нужды и таким образом строит внешний вид (интерфейс) своей програм-
мы. При этом он еще до компиляции своего приложения видит результаты про-
ектирования интерфейса пользователя.
Поскольку элементы библиотеки LCL доступны для всех поддерживаемых платформ, то GUI-приложения созданные на одной платформе (например,
465
6.2 Различия между консольными и графическими приложениями
____________________________________________________________________
Windows), могут быть без изменения скомпилированы на другой платформе
(например, OS X или Linux). При этом следует помнить, что графический ин-
терфейс в различных операционных системах реализован совершенно по-
другому. Так, в Windows GUI основан на функциях WinAPI, а в Linux на биб-
лиотеках GTK-2 или QT.
6.2. Различия между консольными и графическими приложениями
Итак, приложение с GUI отличается от консольного наличием графическо-
го интерфейса (напомню, что консольное приложение использует экран в тек-
стовом режиме, а приложение с GUI в графическом режиме). Но между кон-
сольным и GUI-приложением существует еще одно, более существенное разли-
чие. Консольное приложение, получив управление, далее полностью само кон-
тролирует вычислительный процесс. По мере необходимости запрашивает дан-
ные для работы (оператор read), выводит результаты вычислений на экран (опе-
ратор writeln) и завершает работу по достижению последнего оператора про-
граммы.
Совершенно по-другому работают GUI-программы. Они реагируют на
события. Событие может вызвать действие пользователя, например, нажатие мышью на какую-нибудь кнопку в приложении. Событие может вызвать опера-
ционная система или же событие может породить само приложение. Все собы-
тия отслеживаются операционной системой, которая формирует на каждый тип события соответствующее сообщение. Это сообщение передается в приложе-
ние, на которое приложение должно реагировать в соответствии с алгоритмом своей работы. Т.е. GUI-приложение должно уметь обрабатывать сообщения операционной системы и уметь генерировать и посылать свои собственные со-
общения.
Приложение, после запуска, создает свое окно и запускает так называемый
466
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
цикл обработки сообщений. Грубо говоря, оно ждет сообщений от операцион-
ной системы. Роль программиста заключается в разработке кода по обработке сообщений при возникновении какого-либо события.
Сообщения передаются операционной системой именно тому приложе-
нию, которому оно предназначено. Таким образом реализуется мультипро-
граммность операционной системы, т.е. возможность одновременно запускать
иработать с несколькими приложениями.
ВLazarus обработка сообщений заменена на обработку событий. При этом
Lazarus берет на себя всю рутинную работу по расшифровке многочисленных типов сообщений и их не менее многочисленных параметров. Таким образом,
работа программиста значительно облегчается. Программисту достаточно вы-
брать те события, на которые будет реагировать его приложение и написать процедуру по обработке соответствующего события.
В таблице 6.1 приведены некоторые события и условия, при которых они возникают.
Исходя из таблицы 6.1. для некоторого окна может быть создано девять процедур для обработки событий. Например, процедура по обработке события
OnCreate (создание окна) может в это время выполнить некоторые подгото-
вительные операции, такие как открытие файлов, инициализацию некоторых переменных и т.д.
Разумеется, не обязательно писать обработчики событий для всех возмож-
ных событий. В этом случае, если отсутствует обработчик какого-нибудь собы-
тия, то это событие просто не будет обработано вашим приложением. Напри-
мер, если в приложении отсутствует обработчик события OnKeyDown, то на нажатие клавиш на клавиатуре приложение будет реагировать стандартным об-
разом, например при нажатии Alt+F4 окно приложения будет закрыто.
467
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
Таблица 6.1
№ п/п |
Событие |
|
Когда возникает |
|
||
|
|
|
|
|
||
1. |
OnCreate |
Событие |
возникает |
при |
||
|
|
создании |
окна |
и только |
||
|
|
один раз. |
|
|
|
|
2. |
OnShow |
Это событие генерируется, |
||||
|
|
когда окно станет види- |
||||
|
|
мым. |
|
|
|
|
3. |
OnActivate |
Это событие генерируется, |
||||
|
|
когда окно становится ак- |
||||
|
|
тивным, то есть когда по- |
||||
|
|
лучает фокус ввода. |
|
|||
4. |
OnPaint |
Это |
событие |
возникает |
||
|
|
каждый раз при перери- |
||||
|
|
совке окна. |
|
|
||
5. |
OnReSize |
Это |
событие |
возникает |
||
|
|
каждый раз при изменении |
||||
|
|
размеров окна. |
|
|
||
6. |
OnClose |
Событие возникает при за- |
||||
|
|
крытии окна. |
|
|
||
7. |
OnKeyDown |
Событие |
наступает |
при |
||
|
|
нажатии любой клавиши. |
||||
8. |
OnKeyPress |
Событие |
наступает |
при |
||
|
|
нажатии клавиши символа. |
||||
9. |
OnKeyUp |
Событие |
возникает |
при |
||
|
|
отпускании любой клави- |
||||
|
|
ши. |
|
|
|
|
6.3. Визуальное программирование в среде Lazarus
6.3.1 Создание графического приложения
Для создания графического приложения можно в главном меню открыть пункт Файл-> Создать. Во вкладке Проект выберите пункт Приложение, рис.
6.7.
468
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F469x1.jpg)
Глава 6 Программирование приложений с графическим интерфейсом
____________________________________________________________________
Рис. 6.7. Создание графического приложения
Нажмите ОК.
Второй способ. Выберите пункт меню Проект, Создать проект… (рис. 6.8).
Рис. 6.8. Меню "Проект"
Выберите Приложение и нажмите ОК, рис. 6.9
469
![](/html/66936/286/html_e6jHPkGZZp.5LuV/htmlconvd-udfP_F470x1.jpg)
6.3 Визуальное программирование в среде Lazarus
____________________________________________________________________
Рис. 6.9. Другой способ создания графического приложения
Кроме того, если в настройках окружения (Окружение-> Настройки ок-
ружения-> Файлы) снять галочку "Открывать последний проект при запуске" (рис. 6.10.), то Lazarus автоматически будет создавать новый проект GUI-
приложения при каждом запуске.
Рис. 6.10. Окно "Параметры IDE"
470