Уважаемый посетитель!
Так как в Вашем браузере запрещено использование JavaScript для web-страниц, меню сайта Вам не доступно.
Для навигации по сайту используйте пожалуйста карту сайта.

Сделать стартовой Добавить в избранное Обратная связь

партнеры

SQL.RU

Детский Дворик - Портал детских фотографий

ГавГав.Инфо - портал для собаководов-любителей и профессиональных кинологов

Хосе Рауль Капабланка, кубинский шахматист, чемпион мира в 1921—27 г.г.

информация

реклама

Скачать RAR архив. 59Kb
« Глава 2 Оглавление Глава 4 »

Глава 3
пишем первую программу (заключение)

Итак, продолжим. В предыдущих главах мы создали технически завершенное приложение, отвечающее практически всем функциональным требованиям. Теперь нам осталось "навести красоту" для удобства конечного пользователя - вставить иконки, добавить меню настроек, "подогнать" размеры объектов. С последним пунктом (подгонка размеров объектов), я думаю, Вы разберетесь самостоятельно, а с остальным я Вам помогу.

Для начала создадим пользовательское меню. Для этого выберите пункт меню "File New Object Menu". Откроется окно Menu Painter. В средней части окна, на заголовке нового меню Unititled0 с иконкой щелкните правой кнопкой мыши и во всплывающем меню выберите пункт "Insert Submenu Item". На закладке General подокна Properties введите:

m_settings - имя пункта меню
Lock Name - заблокировать имя от случайного изменения
Настройка - название пункта меню, которое увидит пользователь

Сохраните меню под именем "m_main" (при этом надпись Unititled0 изменится на m_main). Добавьте пункты меню "О программе" (m_about) и "Выход" (m_quit) повторив для них ту же операцию что и для первого пункта меню. Еще раз сохраните сделанные изменения. Теперь в пункт меню m_settings нужно добавить два пункта подменю: "Запоминать последнего адресата" (m_save_adr) и "Очищать текст сообщения после отправки" (m_clear_text). Для этого на пункте меню "Настройка" щелкните правой кнопкой мыши и во всплывающем меню выберите пункт "Insert Submenu Item". Меню нарисовано, сохраните сделанные изменения.

Теперь можно приступать непосредственно к кодированию функционала меню. Начнем с самого быстрого и простого: щелкнем правой кнопкой мыши на пункте меню m_quit и выберем пункт "Script". В подокне кода введем одну строчку:

Для дальнейшей работы нам понадобятся две переменные. Откроем application и в секции объявлений глобальных переменных (Declare Global Variables) объявим две строковые переменные:

Сохраним изменения и вернемся в окно Menu Painter. В обработку события clicked() пункта m_save_adr внесем следующий код:

Сохраним изменения и рассмотрим, как работает этот код. Сначала мы проверяем значение переменной "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":


SetProfileString ( Filename, Section, Key, Value ) где:
Filename - имя файла конфигурации в который сохраняется настройка.
Section - название секции файла конфигурации в которой хранятся
          значения этой категории. Секции в файлах конфигурации 
          менуются разработчиком и ограничиваются квадратными 
          скобками. Категория значений, которая хранится в той
          или иной секции так же определяется разработчиком.
Key - имя параметра конфигурации для которого сохраняется значение.
          По сути это та же переменная.
Value - значение параметра.
В случае успешного выполнения функция возвращает значение (1),
в случае ошибки - (-1).

Теперь нам нужно внести в обработку события clicked() пункта меню m_clear_text аналогичный код заменив имя переменной и имя параметра с save_adr на clear_text.

Сохраним изменения и откроем окно w_main. Теперь нам нужно присоединить меню к главному окну программы и написать обработку, которая будет "подхватывать" настройки при запуске программы, учитывать их во время работы и сохранять при завершении работы. На закладке "General" свойств окна выберите меню m_main в пункте MenuName.
В событии Open() окна, в конец сценария обработки, добавьте следующий код:

В этом блоке кода мы, с помощью функции ProfileString считываем значения параметров из файла конфигурации и присваиваем их переменным. Далее мы проверяем полученные значения и, если они не совпадают с допустимыми - не равны ни 0, ни 1, принудительно ставим их равными 0. Значения параметров могут не совпасть с допустимыми если, например, пользователь откроет файл конфигурации текстовым редактором и поменяет значения вручную. Далее мы, в зависимости от значений параметров выставляем или не выставляем значения свойства "checked" для соответствующих настройкам пунктов меню в 'TRUE'. Обратите внимание, что чтобы "добраться" до свойств пункта меню, нужно через точечную нотацию перечислить всех его предков, начиная с главного меню. В последней строке мы, в случае если настройка сохранения имени последнего адресата равна 1, считываем значение last_adr файла параметров конфигурации, которое хранит имя адресата, и записываем его в свойство text объекта sle_user.
Синтаксис функции ProfileString очень похож на синтаксис функции SetProfileString(и это не удивительно, ведь они выполняют две части одной задачи):


ProfileString ( Filename, Section, Key, Default ) где:
Filename - имя файла конфигурации
Section - название секции файла конфигурации
Key - имя параметра конфигурации
Default - значение по умолчанию которое вернет функция если значение
          считываемого параметра окажется равным пустой строке
          (проще говоря если значения не будет вовсе)
Функция возвращает строковое (String) значение параметра в
случае успеха или Null в случае ошибки.

Теперь нужно обработать сохранение имени последнего адресата при закрытии программы. Для этого в событии Close() окна, добавьте следующий код:

Теперь нужно обработать настройку "Очищать текст сообщения при отправке". Для этого в событие Clicked() объекта cb_send между строчками
"messagebox('Отправка.', ' Сообщение отправлено!', Exclamation!)"
и
"End If" вставьте следуюший код:

Сохраните сделанные изменения.

Итак, функционал программы настроен и завершен. С подгонкой размеров объектов Вы, надеюсь, справились самостоятельно. И прежде чем строить исполняемый файл осталось сделать всего две маленькие вещи: дать приложению и окнам приложения иконки и вставить проверку существования файла конфигурации. Для того чтобы дать иконку окну, на закладке "General" свойств окна, в пункте свойства Icon выберите понравившуюся Вам иконку из списка или внесите туда имя ico-файла без пути размещения. Сам ico-файл должен лежать в корневом каталоге программы (C:\project\message\) - это избавит Вас от проблем при построении EXE-файла программы. Выберите иконки для всех окон. Теперь перейдем к иконке приложения. Для этого откройте application. Для того чтобы дать иконку объекту application, которая, заодно, будет являться иконкой EXE-файла, на закладке "General" свойств объекта application нажмите кнопку "Aditional Properties" и на закладке "Icon" выберите ico-файл. Сохраните сделанные изменения.

Теперь нам нужно вставить проверку наличия файла конфигурации в корневом каталоге программы. Для этого в событии Open() объекта appliсation Mess между строчками
"end if" и "open(w_main)" вставьте следующий код:

Этот код с помощью оператора FileExists проверит наличие файла в корневом каталоге и в случае его отсутствия создаст его с помощью оператора FileOpen открыв его на запись. И, так как ничего записывать в него нам не нужно, сразу закроет его оператором FileClose.

Ну, вроде все. Хотя нет, остался еще один момент, о котором я не сказал не слова. Это пункт меню "О программе". Любой разработчик хочет заявить о себе. Для этого рисуется отдельное окно, в котором указываются имя программы, ее версия, имя разработчика и прочая информация. Это окно вызывается из пункта меню "О программе". Думаю, Вы вполне сможете реализовать этот момент разработки. Ну а если Вы не хотите заявлять о себе, просто удалите этот пункт из меню.

Итак, компилируем программу в EXE-файл. Однажды мы это уже делали. По этому открываем наш проект "pr_message". Не торопитесь запускать компиляцию. Если Вы использовали иконки для окон из ico-файлов, то чтобы они нормально отображались у пользователя есть два пути: первый - помещать их в рабочий каталог программы вместе с EXE-файлом, а второй включить их в в сам EXE-файл в качестве ресурсов. Это мы с вами и сделаем. Для этого создайте любым текстовым редактором в каталоге C:\project\message\ файл "mess.pbr" и перечислите в нем все имена ico-файлов по одному в каждой строке. При этом в последней строке не должно быть перевода строки и возврата каретки, то есть последняя строка файла ресурсов не должна быть пустой. Сохраните и закройте файл. В Project Painter выберите этот файл в пункте Resource File Name. Сохраните проект. Вот теперь можно запускать компиляцию EXE-файла.

Ну что же, Ваша первая программа готова к тому, чтобы ею пользовались. Теперь Вы можете поделиться ею со своими друзьями и коллегами. Для этого поместите в отдельный каталог следующие файлы из каталога C:\project\message:
mess.exe
mess.ini
users.dbf
А из каталога С:\Program Files\Sybase\Shared\PowerBuilder файлы:
Libjcc.dll
Pbdwe70.dll
Pbodb70.dll
Pbvm70.dll

И вот, у Вас получисля полный дистрибутив Вашей программы. В одной из глав Части III "Лекций" мы, с помощью вспомогательной программы создадим пакет установки (Setup).

В следующих главах мы рассмотрим более сложные приемы программирования и другие объекты PowerBuilder.

10 сентября 2003 г.

IKAR,
Программист-разработчик
PowerBuilder.
Ikar Home Center
GSS,
Программист-разработчик
PowerBuilder.
gss_work@zmail.ru



Последнее обновление: 11.08.2016
Регистрация доменов

Регистрация доменных имен: .RU - 200 руб. и .SU - 500 руб.!
Остальные цены ЗАРЕГИСТРИРОВАТЬ!

реклама
ссылки


Продвижение сайтов

Биржа ссылок

статистика

Яндекс цитирования

(c)2002-2018 Ikar
Ikar Home Center
ICQ: 167220388
На сайте могут быть опубликованы рекламные материалы и ссылки. Всю ответственность за содержание рекламных материалов, текстов ссылок и контент рекламируемых сайтов несет рекламодатель.
hosted on pets-tree