Создание графических интерфейсов в Pascal

Любая хорошая программа обязательно должна обладать графическим интерфейсом, который позволяет пользователям легко и удобно работать с ней. Если при разработке приложений для windows это не вызывает трудностью, то при программировании консольных программ может вызвать проблемы. К счастью, существует специальный модуль Graph, содержащий все самые необходимые функции. Кроме того, данный модуль поддерживает несколько шрифтов, которые можно ориентировать по горизонтали или вертикали, а также позволяет использовать различные типы линий и виды закрашивания.

Для того чтобы создать графический интерфейс программы необходимо, прежде всего, подключить модуль Graph. Делается это также как и подключение любого другого модуля. После этого необходимо в разделе операторов произвести инициализацию графического режима. Для этого используется процедура InitGraph. В качестве параметров процедуре передаются два целых числа: графический драйвер и графический режим, а также один строковый параметр – путь к директории с драйверами. Если в качестве параметра графический драйвер программе будет передано Detect, тогда вызывается процедура DetectGraph. При этом происходит загрузка соответствующего видеодрайвера и установка графического режима. В том случаи, если в качестве графического параметра процедуре будет передано значение отличное от нуля, тогда значения этого параметра воспринимается как номер драйвера, который будет загружен и система переводится в графический режим, который также необходимо задать. Всего существуют два графических режима: реальный и защищенный. Третий же параметр указывает на директорию, в которой находится файлы драйверов. Если этот параметр содержит пустую строку, то считается, что драйвера находятся в одной директории с программой. Все файлы графических драйверов имеют расширение BGI и согласно условиям лицензионного соглашения, вы можете абсолютно свободно распространять их вместе со своей программой. Также вы можете поместить файлы драйверов в свою программу. Для этого необходимо:

  • Преобразовать файл драйвера из формата BGI в формат OBJ. Для этого можно использовать утилиты BINOBJ или BGIOBJ
  • Зарегистрировать графический драйвер, поместив вызов функции RegisterBGIDriver перед процедурой InitGraph.
  • При формировании программа собрать с ней *.OBJ файлы для зарегистрированных драйверов

В случаи если при инициализации графической системы происходит ошибка её причину можно узнать при помощи функции GraphResult, которая возвращает код ошибки.

После инициализации можно приступать к созданию графического интерфейса. При этом следует учитывать, что начало системы координат располагается в левом верхнем углу. Ось Х направлена вправо, а ось Y вниз.

Теперь вы можете создавать любой графический интерфейс своей программы. Однако не стоит забывать, что перед тем как завершить работу своей программы необходимо освободить память занимаемую графическим драйвером. Для этого необходимо воспользоваться функцией CloseGraph. Данная функция имеет только одно ограничение – это необходимость находиться в графическом режиме при её использовании, поэтому если в процессе работы программы вы переключались в текстовый режим, вам необходимо предусмотреть возможность восстановления графического режима перед использованием функции CloseGraph. Для перехода между режимами можно использовать функции RestoreCrtMode - переключение в текстовый режим и SetGraphMode - возврат в графический режим, при этом следует учитывать, что весь ранее подготовленный интерфейс будет стерт.

Автор: Кулинич Артем
Дата публикации: 13.01.2010