|
||||||||||||||||||||||
|
Глава 3 Итак, продолжим. В предыдущих главах мы создали технически завершенное приложение, отвечающее практически всем функциональным требованиям. Теперь нам осталось "навести красоту" для удобства конечного пользователя - вставить иконки, добавить меню настроек, "подогнать" размеры объектов. С последним пунктом (подгонка размеров объектов), я думаю, Вы разберетесь самостоятельно, а с остальным я Вам помогу. Для начала создадим пользовательское меню. Для этого выберите пункт меню "File New Object Menu". Откроется окно Menu Painter. В средней части окна, на заголовке нового меню Unititled0 с иконкой щелкните правой кнопкой мыши и во всплывающем меню выберите пункт "Insert Submenu Item". На закладке General подокна Properties введите:
Сохраните меню под именем "m_main" (при этом надпись Unititled0 изменится на m_main). Добавьте пункты меню "О программе" (m_about) и "Выход" (m_quit) повторив для них ту же операцию что и для первого пункта меню. Еще раз сохраните сделанные изменения. Теперь в пункт меню m_settings нужно добавить два пункта подменю: "Запоминать последнего адресата" (m_save_adr) и "Очищать текст сообщения после отправки" (m_clear_text). Для этого на пункте меню "Настройка" щелкните правой кнопкой мыши и во всплывающем меню выберите пункт "Insert Submenu Item". Меню нарисовано, сохраните сделанные изменения. Теперь можно приступать непосредственно к кодированию функционала меню. Начнем с
самого быстрого и простого: щелкнем правой кнопкой мыши на пункте меню m_quit и
выберем пункт "Script". В подокне кода введем одну строчку: Сохраним изменения и рассмотрим, как работает этот код. Сначала мы проверяем
значение переменной "save_adr". Если оно равно 0 (последний адресат не
сохраняется), то мы присваиваем значение равное 1 (последний адресат сохраняется), иначе
(оператор "else") мы выставляем значение в 0. Дальше мы записываем полуученое
значение настройки в специальный файл параметров конфигурации "mess.ini", который должен
находиться в корневом каталоге программы, с помощью функции "SetProfileString", предназначенной
специально для записи в файлы конфигурации. Если результат записи настройки в файл не успешен
(не равен 1), мы сообщаем пользователю о проблеме и прерываем обработку с помощью оператора
возврата "return". Если же сохранение настройки прошло успешно, и обработка не
была прервана, в последней строчке кода мы изменяем свойство "checked" самого
пункта меню. В зависимости от значения этого свойства ('TRUE' или 'FALSE') слева от
текста этого пункта меню будет появляться или исчезать галочка (для примера Вы можете щелкнуть
правой кнопкой мыши по любой иконке меню PowerBuilder, в выпадающем меню некоторые пункты
имеют свойство "checked" равное 'TRUE' а другие равное 'FALSE').
Так как свойство "checked" логическое и имеет тип данных BOOLEAN
(может принимать только два значения - истина или ложь - 'TRUE' или 'FALSE'),
то для него справедлив синтаксис "равен обратному": "значение равно обратному от значения
- true = NOT false" и наоборот. Теперь рассмотрим подробнее синтаксис PowerScript
функции "SetProfileString":
Теперь нам нужно внести в обработку события clicked() пункта меню m_clear_text аналогичный код заменив имя переменной и имя параметра с save_adr на clear_text. Сохраним изменения и откроем окно w_main. Теперь нам нужно
присоединить меню к главному окну программы и написать обработку, которая будет "подхватывать"
настройки при запуске программы, учитывать их во время работы и сохранять при завершении работы.
На закладке "General" свойств окна выберите меню m_main в пункте
MenuName. В этом блоке кода мы, с помощью функции ProfileString считываем значения
параметров из файла конфигурации и присваиваем их переменным. Далее мы проверяем полученные значения
и, если они не совпадают с допустимыми - не равны ни 0, ни 1, принудительно ставим их
равными 0. Значения параметров могут не совпасть с допустимыми если, например, пользователь
откроет файл конфигурации текстовым редактором и поменяет значения вручную. Далее мы, в зависимости
от значений параметров выставляем или не выставляем значения свойства "checked"
для соответствующих настройкам пунктов меню в 'TRUE'. Обратите внимание, что чтобы "добраться"
до свойств пункта меню, нужно через точечную нотацию перечислить всех его предков, начиная с
главного меню. В последней строке мы, в случае если настройка сохранения имени последнего адресата
равна 1, считываем значение last_adr файла параметров конфигурации, которое хранит имя
адресата, и записываем его в свойство text объекта sle_user. Теперь нужно обработать сохранение имени последнего адресата при закрытии программы.
Для этого в событии Close() окна, добавьте следующий код: Итак, функционал программы настроен и завершен. С подгонкой размеров объектов Вы, надеюсь, справились самостоятельно. И прежде чем строить исполняемый файл осталось сделать всего две маленькие вещи: дать приложению и окнам приложения иконки и вставить проверку существования файла конфигурации. Для того чтобы дать иконку окну, на закладке "General" свойств окна, в пункте свойства Icon выберите понравившуюся Вам иконку из списка или внесите туда имя ico-файла без пути размещения. Сам ico-файл должен лежать в корневом каталоге программы (C:\project\message\) - это избавит Вас от проблем при построении EXE-файла программы. Выберите иконки для всех окон. Теперь перейдем к иконке приложения. Для этого откройте application. Для того чтобы дать иконку объекту application, которая, заодно, будет являться иконкой EXE-файла, на закладке "General" свойств объекта application нажмите кнопку "Aditional Properties" и на закладке "Icon" выберите ico-файл. Сохраните сделанные изменения. Теперь нам нужно вставить проверку наличия файла конфигурации в корневом каталоге
программы. Для этого в событии Open() объекта appliсation
Mess между строчками Ну, вроде все. Хотя нет, остался еще один момент, о котором я не сказал не слова. Это пункт меню "О программе". Любой разработчик хочет заявить о себе. Для этого рисуется отдельное окно, в котором указываются имя программы, ее версия, имя разработчика и прочая информация. Это окно вызывается из пункта меню "О программе". Думаю, Вы вполне сможете реализовать этот момент разработки. Ну а если Вы не хотите заявлять о себе, просто удалите этот пункт из меню. Итак, компилируем программу в EXE-файл. Однажды мы это уже делали. По этому открываем наш проект "pr_message". Не торопитесь запускать компиляцию. Если Вы использовали иконки для окон из ico-файлов, то чтобы они нормально отображались у пользователя есть два пути: первый - помещать их в рабочий каталог программы вместе с EXE-файлом, а второй включить их в в сам EXE-файл в качестве ресурсов. Это мы с вами и сделаем. Для этого создайте любым текстовым редактором в каталоге C:\project\message\ файл "mess.pbr" и перечислите в нем все имена ico-файлов по одному в каждой строке. При этом в последней строке не должно быть перевода строки и возврата каретки, то есть последняя строка файла ресурсов не должна быть пустой. Сохраните и закройте файл. В Project Painter выберите этот файл в пункте Resource File Name. Сохраните проект. Вот теперь можно запускать компиляцию EXE-файла. Ну что же, Ваша первая программа готова к тому, чтобы ею пользовались. Теперь Вы
можете поделиться ею со своими друзьями и коллегами. Для этого поместите в отдельный каталог следующие
файлы из каталога C:\project\message:
И вот, у Вас получисля полный дистрибутив Вашей программы. В одной из глав Части III "Лекций" мы, с помощью вспомогательной программы создадим пакет установки (Setup). В следующих главах мы рассмотрим более сложные приемы программирования и другие объекты PowerBuilder.
Последнее обновление: 11.08.2016 |
|
||||||||||||||||||||
(c)2002-2024 Ikar Ikar Home Center ICQ: 167220388 | ||||||||||||||||||||||
На сайте могут быть опубликованы рекламные материалы и ссылки. Всю ответственность за содержание рекламных материалов, текстов ссылок и контент рекламируемых сайтов несет рекламодатель. |