Автоматизированный режим создания графического интерфейса

Автоматизированный режим создания графического интерфейса реализуется специальным пакетом – интегрированной средой разработки приложений (ИСРП). Для языка С++ в качестве ИСРП используется продукты фирмы Borland (Borland C++3.1, Borland C++4.5, Borland C++5.0, Borland С++ Builder 1 …6). В качестве основной используем версию Borland C++5.0.

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

Генератор интерфейса AppExpert – программный модуль, обеспечивающий разработку окон, кнопок и меню оболочки приложения с автоматической генерацией их программных кодов.

Редактор ресурсов – программный модуль формирования и редактирования всехграфических компонентов интерфейса.

Генератор классов ClassExpert – программный модуль идентификации графических компонентов интерфейса, созданных в редакторе ресурсов.

Из перечисленных модулей наиболее дружественный – генератор интерфейса, позволяющий создавать большую часть графической оболочки приложения, за исключением полей ввода-вывода.

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

Внимание! Использование графического интерфейса меняет общую структуру программы решения задачи. Большая часть ее формируется ИСРП, обеспечивая прорисовку интерфейса. Новая головная функция будет автоматически сформирована ИСРП. При этом вычислительная часть задачи реализуется не головной, а одной из используемых функций.

Рассмотренные изменения требуют следующих корректировок созданной программы:

удалить строку обозначения головной функции main;

заменить операторы ввода-вывода.

Конструкции ввода-вывода в графическое окно

Оконный интерфейс требует замены операторов ввода scanf (cin) и операторов вывода printf (fprintf, cout) на специфические конструкции, организующие:

перемещение содержимого конкретного графического диалогового поля в символьный массив или наоборот;

преобразование символьного типа в числовой или наоборот.

Одновременно должны быть учтены особенности ввода-вывода данных, обусловленные формой их представления:

единичное значение;

массив.

Ввод (вывод) единичных значений реализуют однострочные активные поля (однострочные пассивные поля). Ввод (вывод) массивов – многострочные активные поля (списки).

Перемещения содержимого

Рассмотрим особенности конструкций ввода и вывода по каждому варианту отдельно.

Перемещение содержимого однострочного поля в символьную строку

Обеспечивает перемещение содержимого конкретного однострочного графического диалогового поля в символьный массив, обрабатываемый программой. Структура:

имя_поля –> GetText(имя, длина);

где имя_поля – идентификатор диалогового поля в программе;

GetText – ключевое слово (забрать текст);

имя – идентификатор создаваемого символьного массива;

длина – максимальный размер массива (символьной строки) – целое число;

( ) – ограничители аргумента;

–> – доступ к объекту (однострочное поле);

; – символ оператора.

Так, запись

PoleN–>GetText(buf, 5);

предписывает размещение данных из поля с идентификатором PoleN в создаваемый массив с именем buf (пятиразрядную символьную строку).

Перемещение содержимого многострочного поля в символьную строку

Обеспечивает перемещение содержимого конкретного элемента многострочного графического диалогового поля в символьный массив. Структура:

имя_поля –> GetLine(имя, длина, номер);

где имя_поля – идентификатор диалогового поля в программе;

GetLine – ключевое слово (забрать строку);

имя – идентификатор создаваемого символьного массива;

длина – максимальный размер формируемого символьного массива (строки) – целое число;

номер – номер текущего элемента многострочного активного поля;

( ) – ограничители аргумента;

–> – доступ к объекту (многострочное поле);

; – символ оператора.

Так, запись

PoleN–>GetLine(buf, 5, i);

предписывает размещение данных из i-й строки многострочного активного поля с идентификатором PoleN в создаваемый массив с именем buf (пятиразрядную символьную строку).

Перемещение содержимого строки в однострочное поле

Обеспечивает перемещение содержимого символьного массива в конкретное графическое диалоговое поле. Структура:

имя_поля –> SetText(имя);

где имя_поля – идентификатор диалогового поля в программе;

SetText – ключевое слово (вставить текст);

имя – идентификатор используемого символьного массива;

( ) – ограничители аргумента;

–> – доступ к объекту (однострочное поле);

; – символ оператора.

Так, запись

PoleN–>SetText(buf);

предписывает размещение данного из символьного массива buf в диалоговом поле с идентификатором PoleN.

Перемещение содержимого строки в многострочный список

Обеспечивает перемещение (добавление) содержимого символьного массива в текущую (нижнюю) строку графического многострочного списка. Структура:

имя_поля –> AddString (имя);

где имя_поля – идентификатор многострочного списка в программе;

AddString – ключевое слово (добавить строку);

имя – идентификатор используемого символьного массива;

( ) – ограничители аргумента;

–> – доступ к объекту «многострочный список».

; – символ оператора.

Так, запись

ListN–> AddString (buf);

предписывает размещение данного из символьного массива buf в текущую нижнюю строку многострочного списка с идентификатором ListN.

Преобразование типов

Ввод-вывод численных данных, независимо от формы их представления, обуславливает использование специальных функций преобразования типов. Функции различаются по назначению преобразования – из строки в целый, из строки в вещественный, из вещественного в строку и т.п.