Плавный переход с DOS на GUI
Для этого упражнения вам не понадобится редактор. Так что сверните его и откройте папку с примерами программ для Xbase++ через меню Пуск (Пуск -> Программы -> Alaska Xbase++ Intl. -> Xbase++ Samples). Откройте там папку Migrate, а в ней папку Dbget.
Сначала запустите программу DBGET1.EXE, выбрав соответствующую иконку левой кнопкой мыши. Эта программа – типичный пример маски Get, которая используется для редактирования полей баз данных в текстовом режиме. Функция SetKey() используется для навигации по базе данных, или же для того, чтобы передвинуть указатель записи. Попробуйте нажать различные функциональные кнопки от F1 до F5, чтобы посмотреть, как изменяются данные, и завершите программу, нажав кнопку F6.
Давайте теперь посмотрим на DBGET2.EXE. Эта программа возникла из DBGET1.EXE, и она показывает промежуточный вариант на пути от DOS к GUI: маска Get все еще такая же, но функциональные кнопки заменены графическими. Маска Get слушается мышки, и указатель записи может быть перемещен нажатием на графические кнопки.
Просто нажмите на кнопку мыши между Gets и кнопками для того, чтобы увидеть, как аккуратно интегрировано графическое управление в бывшее текстовое приложение. Вы можете использовать графический интерфейс в ваших программах хоть на 10%, хоть на все 100%. Это зависит только от вас. Xbase++ дает вам всю ту гибкость, которая вам нужна, и вы можете перенести программы на GUI шаг за шагом по своему усмотрению. Это уникальная возможность, которой не существует ни в одном другом программном продукте на этой планете.
Кстати, графическое управление называется Xbase Parts, так как они обеспечивают “реальные возможности” при разработке приложений. Xbase Parts разработаны для выполнения самых сложных заданий (тех, которыми программисту не стоит забивать голову) автоматически. Вы можете сконцентрироваться на вашем основном задании: создании алгоритма для бизнес-приложения.
Теперь завершите программу DBGET2.EXE и взгляните на исходный текст в файлах DBGET1.PRG и DBGET2.PRG. Вы можете загрузить оба файла в ваш редактор или же просмотреть их при помощи блокнота Windows, дважды нажав левой кнопкой мышки на иконки этих файлов. Если вы программист Clipper, то вы сразу же узнаете в файле DBGET1.PRG простой код, написанный для Clipper. На самом деле, этот файл может быть скомпилирован как в Clipper, так и в Xbase++. Вы не заметите никакой разницы, разве что если откроете диспетчер задач Windows и посмотрите на использование CPU. Попробуйте!
Когда вы будете сравнивать DBGET1.PRG и DBGET2.PRG, обратите внимание на то, насколько легко меняются клавиши управления программой с SetKey() на кнопки:
** DBGET1.PRG **
SETKEY (K_F2, {|| DBSKIP(1), GetRefresh(GetList)})
** DBGET2.PRG **
PushButton ({120, B_TOP}, {50, B_HEIGHT}, "Next", {|| DbSkip(1), GetRefresh(GetList) } )
FUNCTION PushButton (aPos, aSize, xCaption, bBlock)
<...>
button:Activate := bBlock // <— кнопка получает блок кода
<...>
Вместо того чтобы присоединить блок кода к функциональной клавише при помощи SetKey(), тот же блок кода можно присоединить к переменной Xbase Parts (в данном случае: pushbutton). Xbase Parts автоматически выполняет блок кода, когда пользователь нажимает на кнопку.
Теперь вы можете закрыть папку DbGet.
Чему я научился?
Я знаю, как выполнять программы примеров Xbase++, а также где найти соответствующие исходные тексты этих программ. Я понял, что нет необходимости снова полностью переписывать код программ Clipper для того, чтобы перейти на графический интерфейс. Вместо этого я могу сделать только этот один шаг, а если я могу идти шаг за шагом, то почему бы мне не начать процесс перехода с тех частей моего приложения Clipper, которые чаще всего используются пользователями? Реже используемые части могут остаться в текстовом режиме. Таким образом, я могу создать быстро Windows программу с хорошим интерфейсом.
-