Почитайте!

Нас читают

Статьи о программировании и не только

Mail.Ru

Rambler's Top100

Programming Blogs - BlogCatalog Blog Directory

Поздравьте своих любимых!

12.02.2008 от Иван Ширко

Господа программисты! Вы на календарь хоть изредка поглядываете? Нет? Так наведите мышкой на часики, которые обычно находятся справа-внизу экрана. Появилась подсказка? Ага… 12 февраля 2008 года (если конечно вы для обхождения триала не переводили дату). Год нам не важен, а вот на число и месяц обратите особое внимание. Скоро будет… нет, 23 февраля тоже скоро будет, но до него еще есть 14 февраля - День Святого Валентина. Надо бы поздравить свою вторую половинку. Разумеется, вы лучше меня знаете, как это сделать, но, если позволите, я подкину вам небольшое дополнение к поздравлению. Программа-валентинка, простенькая, на Delphi, попалась мне при просмотре форума на http://delphimaster.ru. Автор - Dmitry S. Надеюсь, он простит мне маленький пиар его творения.
Сама программа может послужить примером полупрозрачности, проигрывания midi, создания окон, работы с ресурсами.
На Блоггере файлы размещать нельзя, так что пока я не обзавелся нормальным хостингом (что будет, надеюсь, скоро), файлы буду хранить на народе. Валентинку можете скачать отсюда: http://ivanfdc.narod.ru/download.html или http://argi.ru/upload/heart3-w.rar. 225 КБ. В архиве исходники + сама программа. Текст меняется в модуле WindowMessage.pas.

14 февраля, день Валентина

Рубрики: Delphi | Комментарии (10) »

Сделай сам: IE и Delphi – вместе веселее!

28.01.2008 от Иван Ширко

Сегодня мы займёмся самым популярным web-браузером в мире – Internet Explorer'ом. Кто-то обожает эту программу, кто-то терпеть её не может, но, как ни крути, пока что ни один конкурент IE не может приблизиться к нему по возможностям (не считая, конечно, браузеров, построенных на движке IE). Итак, что мы будем делать с IE? Да ничего страшного… Мы просто научимся управлять им так же, как и любым другим окном. Для закрепления полученных знаний сделаем программу для управления IE при помощи горячих клавиш. Для пущего эффекта добавим иконку программы на Системную панель (SysTray). Итак, поехали…
Первым делом разберёмся с двумя приёмами программирования, которые мы будем использовать и в последующих статьях данного цикла:
1) Как работать с "горячими" клавишами?
2) Как добавить свой значок на Системную Панель (SysTray, можно узнать по характерным для неё часикам)?
На первый вопрос я уже дал частичный ответ в статье Сделай сам: "Вскрывалка паролей", но нам нужно копнуть немного глубже, а второй вопрос мы ещё вообще не затрагивали.

Читать полностью »

Рубрики: Delphi, Сделай сам | Комментарии (2) »

Сделай сам: управление автозагрузкой

09.01.2008 от Иван Ширко

Продолжаем серию "Сделай сам", посвящённую практическому применению Delphi. На этот раз мы поговорим о такой важной составляющей жизни нашего компьютера, как автозагрузка. При загрузке Windows могут запускаться самые разные приложения: от системной панели (вы её можете узнать по характерным для неё часам) до программы оптимизации реестра.
Все мы любим устанавливать новые программы. А некоторые из них, дабы мы с ними никогда не расставались, втихую прописывают себя в автозагрузку. Вот и получается, что со временем Windows загружается всё дольше и дольше. А всё потому, что с ней за компанию запускаются различные "удобняшки", антивирусы (а иногда и их анти-сородичи) и т.п.
Вывод из всего вышесказанного: время от времени нужно проводить "зачистку" в автозагрузке. Продвинутыми пользователями это делается при помощи редактора реестра и Блокнота, а все остальные используют специальные программы. Давайте посмотрим, что нам предлагает Windows для управления автозагрузкой. После недолгих поисков была найдена программа MsConfig (лежит она в каталоге …\Windows\System). MsConfig позволяет просматривать список файлов, запускающихся вместе с Windows и удалять элементы из автозагрузки с возможностью восстановления. Программа обрабатывает файл Win.ini, папку "Автозагрузка" и следующие ключи реестра: HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Run, HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run и HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices.
Теперь, когда есть с чем сравнить, сделаем свою программу для управления автозагрузкой. Вот что наше творение будет уметь делать к концу статьи:
1) Всё, что умеет MsConfig, за исключением восстановления удалённых из автозагрузки файлов;
2) Добавлять новые файлы в автозагрузку и изменять пути к существующим;
3) Обрабатывать большее количество ключей реестра, чем MsConfig.

Теперь немного теоретических сведений:
1) В Win.ini есть два параметра: Load и Run. Все файлы, имена которых записаны в этих параметрах через пробел, будут загружаться при старте Windows. А значит, в именах файлов не должно быть пробелов. Этого легко добиться при помощи функции sysutils.ExtractShortPathName (filename).
2) В реестре есть "автозагрузочные" ключи с одинаковыми названиями: Run и RunOnce. Одна пара находится в разделе HKEY_LOCAL_MACHINE, а другая – в HKEY_CURRENT_USER. В связи с этим, в нашей программе будем осуществлять переход между разделами при помощи двух компонентов TradioButton (см. рис. 1).

Читать полностью »

Рубрики: Delphi, Сделай сам | 1 Комментарий »

Сделай сам: "Вскрывалка паролей"

17.12.2007 от Иван Ширко

Каждому пользователю ПК время от времени приходится вводить пароли: для установки программы, для соединения с интернетом, для получения почты и т.д. Как правило, при вводе пароля, вместо нормальных символов появляются звёздочки ('*'). Делается такая конспирация не только для сокрытия пароля от посторонних глаз, но и для того, чтобы злоумышленник, получивший доступ к компьютеру, не мог узнать пароли, сохранённые в системе. Но, как известно, нет совершенной защиты, поэтому теперь можно найти много программ для извлечения паролей  из-под "звёздочек". Некоторые программы могут показывать пароль в отдельном окошке, другие же неким чудесным образом заставляют превратиться "звёздочки" в нормальные символы. В данной статье мы рассмотрим процесс создания программы, которая умеет "выковыривать" пароли двумя вышеописанными способами.

         Вначале немного теории. Windows, судя по названию, это "сборище" окон. Каждое окно обычно содержит другие окна, т.е. является родителем для некоторых других окон (эти "другие окна" называют дочерними). Для нашей программы нам достаточно знать, что то поле, куда мы вводим пароли является хоть и маленьким, но окном. А значит, как и любое порядочное окно, оно имеет параметр "текст окна" и умеет принимать\отсылать сообщения. Именно на данных весьма полезных свойствах полей ввода основаны программы для извлечения паролей из-под "звёздочек".

         Итак, способ первый для "вскрытия" паролей: нужно просто узнать текст окна, содержащего пароль. Вот и всё, никаких сложностей. Правда, работать данный способ будет только в Win9x и, возможно, в WinMe. Осталось только написать функцию для получения текста произвольного окна:

Читать полностью »

Рубрики: Delphi, Сделай сам | Комментарии (2) »

Двойная буферизация или Анимация без мерцания

10.12.2007 от Иван Ширко

     Пример к статье (программа + исходники на Delphi)

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

     Итак, разберём самый простой случай, когда нам нужно двигать простую фигуру (например, круг) по одноцветному фону. Реализовать это можно разными способами. Можно, например, действовать напрямую: нарисовать поверх фона круг и через некоторый промежуток времени заливать всю картинку цветом фона, после чего рисовать круг со смещёнными координатами. В итоге мы получим вполне движущуюся фигуру, но вот мерцание будет всё портить. Решение напрашивается само собой: нужно заливать не весь холст цветом фона, а только ту область, из которой нам нужно стереть изображение круга. В данном случае достаточно просто нарисовать цветом фона такой же круг, но у которого цвет равен цвету фона, что приведёт к стиранию начального круга.
А теперь представим, что у нас по одноцветному фону движется уже сложное изображение. Здесь уже не удастся пиксель в пиксель затереть это изображение, так что придётся обводить его некоторой простой областью (например, прямоугольником) и закрашивать её.
     Всё это, конечно, хорошо, но описанные случаи не представляют из себя особой практической ценности и используется разве что в учебных целях. Так что усложним ситуацию: пусть сложное изображение движется по сложному фону. Закрашивать тут не имеет смысла, так что нужно придумывать что-нибудь новенькое. Вот тут мы и подошли к методу двойной буферизации. Этот метод использовался и используется в играх, программах с графическим интерфейсом, да и просто в стандартных компонентах операционных систем. Как следует из названия, метод двойной буферизации предполагает наличие двух буферов. Один нужен для хранения перемещаемого изображения, а другой для хранения той области фона, в которую мы собираемся прорисовать это изображение. То есть последовательность действий примерно такая:

Читать полностью »

Рубрики: Delphi | Комментарии (2) »

Мультимедиа под контролем или Функция mciSendString

05.12.2007 от Иван Ширко

    В данной статье рассматривается функция mciSendString, которая находится в библиотеке winmm.dll. Эта функция может подавать команды любому MCI (Media Control Interface) устройству (поддерживаемое системой мультимедиа устройство: WAV, MIDI, CDAudio, Video и т.п.).
Вот её синтаксис:
MCIERROR mciSendString(
  LPCTSTR lpszCommand,
  LPTSTR lpszReturnString,
  UINT cchReturn,
  HANDLE hwndCallback
);

lpszCommand – команда;
lpszReturnString – строка результата;
cchReturn – размер в символах строки результата;
hwndCallback – окно отзыва (используется только при установленном в первом параметре флага "notify").
    Все дальнейшие примеры будут написаны на Delphi, но их перевод на другие языки, я думаю, не составит особого труда.
    Теперь условимся с параметрами функция mciSendString в последующих примерах:

  • HwndCallback: будет принимать значение 0;

  • CchReturn: будет принимать значение 64 (в MSDN написано, что это максимальная длина ошибки, которая может быть возвращена параметром lpszReturnString);

  • LpszReturnString: в этом параметре будем использовать переменную sbReturn: array [1..64] of char;

    Пришло время перейти к самому главному параметру функции – lpszCommand. Эта команда составляется при помощи специальных операторов, часть которых рассматривается далее.

Читать полностью »

Рубрики: Delphi | Комментарии (5) »

Microsoft Agent. Часть II

03.12.2007 от Иван Ширко

В прошлой части мы научились применять технологию Microsoft Agent в web-страничках. В этот раз мы будем работать с Delphi. Убедитесь, что установлены все необходимые компоненты (см. первую часть) и можно отправляться в увлекательное путешествие по миру MsAgent.
Запустите Delphi и в меню "Component" выберите пункт "Import ActiveX Control…". В появившемся диалоговом окне нужно выделить строку "Microsoft Agent Control…" и нажать кнопку "Install". Далее произойдёт стандартный процесс установки нового компонента. После окончания инсталляции создайте новое приложение и поместите на форму полученный компонент – Agent1:TAgent (он должен находиться на закладке ActiveX).
Вот этот вот почти «ноль-ноль-семь» будет помогать нам создавать приложения, которые будут работать с технологией MsAgent. Начнём с небольшого примера, с маленького костяка, который можно будет использовать при разработке более сложных программ.

Читать полностью »

Рубрики: Delphi, MsAgent | Комментарии (3) »

Джентльменский набор web-разработчика

30.11.2007 от Иван Ширко

Сейчас огромное количество людей имеет доступ к интернету. И многим пользователям в один прекрасный день приходит в голову мысль о создании собственного представительства в этой необъятной сети. Тогда пользователь при помощи HTML-редактора создаёт свою домашнюю страничку. Через некоторое время, если энтузиазм не закончится, происходит переход на более мощную программу для редактирования web-страниц, в которой переделывается первоначальная версия сайта. Большинство на этом этапе останавливаются, но некоторые пользователи пытаются улучшить свой сайт и через некоторое время натыкаются на проблемы, которые HTML, даже динамический, решить не в состоянии. А значит, настало время переходить на скриптовые web-языки программирования. И вот тут-то и возникает проблема отладки скриптов. Конечно, можно закачивать их на сервер и тестировать в самых, что ни на есть реальных условиях. Но, как известно, программы без ошибок сразу не пишутся, поэтому закачивать на сервер свои скрипты придётся не один и даже не десять раз. Так что к затратам на интернет добавятся и временные затраты. Поэтому web-разработчики устанавливают себе локальные web-серверы, которые позволяют безо всякого интернета запускать различные скрипты.
Самым популярным web-сервером на сегодняшний день является Apache. Но не каждый, даже продвинутый пользователь сможет корректно настроить его и подключить все необходимые модули. К тому же для установки потребуется скачать более 10 Мб, а интернет – удовольствие не бесплатное.
В связи с вышеизложенным хочу обратить внимание начинающих, да и не только начинающих, web-разработчиков на пакет «Джентльменский набор web-разработчика», или коротко ­– Денвер. Данный пакет включает в себя весь комплекс программ, необходимый для комфортной и эффективной отладки любых сайтов. Вот состав базового комплекта:
1. Сам web-сервер Apache;
2. PHP;
3. MySQL;
4. phpMyAdmin – панель управления базой данных MySQL;
5. Perl (без модулей);
6. Отладочная "заглушка" для sendmail. То есть, если скрипт отправляет письмо, то оно не отправляется, а записывается в текстовый файл.
И вот этот базовый комплект занимает чуть больше 2 Мб! Давайте посчитаем, сколько всё это должно занимать места при обычной установке всех этих приложений:
· Apache » 4 Мб;
· PHP4 » 5,5 Мб;
· ActivePerl » 8,5 Мб;
· MySQL » 12,5 Мб.
· PhpMyAdmin » 1 Мб.
Итого: »31,5 MB. Правда, обычно PHP и Perl вместе не используются, так что можно отнять мегабайт семь, но всё равно цифра получается довольно впечатляющей, особенно на фоне качества наших телефонных линий. Как же удалось уместить всё это в двух мегабайтах? Во-первых, были удалены редко используемые компоненты и документация. Также, за ненадобностью были удалены инструкции установки и всякие истории развития продуктов. После чего всё это упаковали очень мощным архиватором – 7-zip. Конечно, если вам вдруг понадобится документация или дополнительные модули, то их можно найти в разнообразных расширениях. Вот так вот практически без потери функциональности размер дистрибутива сокращён в десятки раз. Но сокращение размера, на мой взгляд, не самое главное достоинство Денвера. Основное преимущество этого джентльменского набора в очень лёгкой и быстрой установке и настройке всех модулей. Нужно просто запустить программу установки и после нескольких несложных шагов (выбор папки, способ запуска сервера и т.п.) Apache полностью настроен и готов к работе. При этом Денвер ничего не записывает в реестр, никаких новых файлов в системных директориях у вас тоже не появится. Более того, можно даже просто переместить Денвер в другой каталог и он всё равно будет нормально функционировать.
Ну а теперь пара слов о работе Денвера. При запуске создаётся виртуальный локальный диск, например, Z: (созданием виртуальных дисков в Windows занимается утилита subst), который ассоциируется с каталогом Денвера. Затем последовательно запускаются все программы. После завершения работы восстанавливаются прежние настройки системы. Особенно меня порадовала поддержка Денвером виртуальных хостов, т.е. когда на одном компьютере ведётся работа с несколькими локальными сайтами. Для добавления нового хоста нужно просто в соответствующем каталоге создать новую папку, перезапустить сервер и всё! Денвер сам сконфигурирует Apache и внесёт необходимые изменения в файл …\Windows\hosts. Для тех же, кто любит вручную копаться в различных параметрах, все комментарии в настроечных файлах переведены на великий и могучий и, главное, понятный русский язык. Ну и напоследок хочу сказать, что авторы Денвера активно сотрудничают с пользователями и, учитывая их вопросы и предложения, постоянно развивают свой джентльменский набор.
Скачать Денвер можно отсюда: http://www.denwer.ru/dis/Base/latest. А на самом сайте http://dklab.ru можно найти много интересного про Денвер в частности и про создание динамических сайтов вообще.

Иван Ширко
ishyrko@gmail.com

Постовой: экономьте электричество - солнечные батареи

Рубрики: Web-разработка | Комментарии (5) »

Сделай сам: Управление Winamp

29.11.2007 от Иван Ширко

Пример к статье 

В этот раз мы поговорим об управлении популярнейшим аудио-плеером, имя которому – Winamp. Благодаря своей нулевой цене, поддержке скинов и, что самое главное, плагинов, Winamp установлен на огромном количестве ПК. И этим программным шедевром Nullsoft, оказывается, можно довольно легко управлять программно. В связи с этим, большинство soft-каталогов не обходится без пары-тройки программ управления Winamp’ом. Давайте рассмотрим, что же происходит в недрах таких программ.

Winamp поддерживает большое количество сообщений, которые можно послать его окну при помощи функции
SendMessage(
HWND:hWnd, // идентификатор окна
Msg:Integer, // посылаемое сообщение
WParam:Integer, // первый параметр сообщения
LParam:Integer // второй параметр сообщения
);

Winamp поддерживает два основных типа сообщения (параметр Msg):
WM_COMMAND: служит только для подачи определённых команд Winamp’у (Play, Stop, Next, Close и т.д.);
WM_USER: используется не только для выполнения определённых действий, но и для определения различной информации (версия, текущая композиция, количество композиций и т.д.).

Читать полностью »

Рубрики: Delphi, Winamp, Сделай сам | Комментарии (7) »

Создание справочной системы

28.11.2007 от Иван Ширко

Всё! Завершено гениальное творение не менее гениального программиста. Программное детище проверено, отлажено и перепроверено. Все найденные друзьями-тестерами "баги" благополучно устранены. А значит, пришло время распространить программу среди пользователей, которые раньше как-то умудрялись без неё обходиться... И вдруг понимаешь, что, несмотря на интуитивно-понятный интерфейс, в мире обязательно найдутся не интуитивно-понятливые "юзеры", которые не смогут насладиться всеми функциями данного произведения искусства, а то и вовсе (о, ужас!) удалят программу БЕЗВОЗВРАТНО. Смахнув со лба капли холодного пота и преисполнившись жалостью к таким "юзерам", всерьёз задумываешься о сопроводительной документации. На ум сразу же приходят мысли о файле "readme.txt" или о небольшой html-страничке, но тут же отметаются: в солидном проекте всё должно быть солидно. Так что придётся делать общепринятый файл *.hlp, который будет гордо называться "справочной системой". Как создавать файлы такого формата рассказывает данная статья.
Прежде всего, нам понадобится программа Microsoft Help Workshop. Найти её можно по адресу http://download.microsoft.com/download/0/a/9/0a939ef6-e31c-430f-a3df-dfae7960d564/htmlhelp.exe, также она распространяется вместе с популярными средами программирования (Delphi, VC++). Помимо этой "софтины", нам потребуется текстовый процессор для создания файла в формате RTF (rich-text format), Word от всё той же Microsoft вполне подойдёт.
Теперь можно приступить к процессу создания справочной системы, который состоит из трёх важных составляющих:
– подготовка RTF-файла;
– создание и компилирование файлов справочной системы;
– создание содержания справки.

Создание RTF-файла

Оформление разделов
Как известно, справка обычно разбивается на разделы. В RTF-файле каждый раздел должен начинаться заголовком и заканчиваться символом "разрыв страницы" ("Вставка\Разрыв..."). Кроме этого, раздел должен содержать уникальный идентификатор. Для его установки поместите текстовый курсор перед первым символом заголовка и из меню "Вставка" выберите пункт "Сноска...". В появившемся диалоговом окне (рис.1) в разделе нумерация установите радиокнопку в положение "Другая" и введите символ диеза ('#'). После нажатия на кнопку "OK", Word предложит ввести текст сноски, что и необходимо сделать. Следует заметить, что если текст сноски начинается с префикса IDH_, то во время компиляции справочной системы будет проверена корректность всех ссылок данного раздела.
Ссылки на другие разделы
Для связывания разных разделов используются слова-ссылки, при нажатии на которые осуществляется переход к нужной ветке справки. Для того, чтобы сделать слово ссылкой, нужно выделить его и подчеркнуть двойной линией ("Формат\Шрифт\Подчёркивание/Двойное"). После этого, сразу за словом-ссылкой, требуется поместить идентификатор нужного раздела (текст сноски). При запуске справки ссылка будет выделена цветом и одинарным подчёркиванием.
Комментарии
В документе можно использовать не только ссылки на другие разделы, но и ссылки на комментарии (например, для объяснения какого-нибудь заумного термина). Во время работы справочной системы такие ссылки выделяются цветом и подчёркиванием пунктирной линией, при нажатии на них появляется вплывающее окно с текстом комментария. В RTF-файле комментарии оформляются так же, как и разделы, но они не должны начинаться с заголовка. Ссылку на комментарий нужно подчеркнуть одной линией и сразу за ней написать его идентификатор скрытым текстом.
Ключевые слова и поиск по разделам
Для каждого раздела справки можно создать список ключевых слов. Для этого нужно перед заголовком раздела установить сноску K, а в текст сноски нужно записать все ключевые слова, разделив их точкой с запятой. При работе справочной системы ключевые слова всех разделов будут отображены в закладке "Указатель". Рядом с ней находится закладка "Поиск", в которой осуществляется поиск по справке. Для того, чтобы включить возможность поиска по какому-либо разделу, нужно перед его заголовком поставить сноску $, текстом которой должно служить название раздела в поисковой системе.
Вставка графики
Для вставки картинки в раздел, достаточно просто поместить её туда в Word'e ("Вставка\Рисунок").

Создание файла справочной системы

Теперь, когда RTF-файл набран, можно приступить к созданию справки на основе этого файла. Запустите программу Microsoft Help Workshop и создайте новый проект, выбрав пункт меню "File\New/Help Project". В правой части окна программы нажмите на кнопку "Files..." и в появившемся диалоговом окне при помощи кнопки "Add" добавьте к проекту RTF-файл. Теперь пройдёмся по опциям справочной системы (кнопка "Options...").
General
Эта закладка содержит основные настройки справки:
Default topic – идентификатор основного раздела справки. Этот раздел появляется при запуске справочной системы (если она не имеет содержания) и в случае, если пользователь нажал на ссылку на несуществующий раздел.
Help title – заголовок справки, который отображается на заголовке окна.
Copyright information – текст, отображаемый в диалоговом окне "Версия" и текст, который автоматически добавляется при печати и копировании справки (подпись).
Сompression
Здесь находятся настройки сжатия справочной системы.
None – не использовать сжатие.
Maximum – максимальное сжатие (дольше компилируется, но занимает меньше места на диске).
Custom – позволяет выбрать алгоритмы сжатия справочной системы.
Files
Файлы, составляющие справочную систему.
Help File – имя файла справки (*.hlp);
Log File – имя log-файла (отчёт о компиляции справочной системы);
Rich Text Format (RTF) files – RTF-файлы (*.rtf);
Contents file – содержание справочной системы (*.cnt);
FTS (full-text search)
Настройки поисковой системы справки.
Generate full text search index – генерировать содержание поиска по справке. Если этот параметр выбран, то при компиляции справочной системы сгенерируется файл имя_справки.fts, который нужен для текстового поиска. Как правило, этот файл занимает намного больше места на диске, чем сама справка (*.hlp).
Теперь осталось сделать содержание для нашей справочной системы.

Создание содержания

Выберите "File\New/Help Contents" и введите имя и заголовок содержания. При помощи кнопок "Add Above" ("Добавить над") и "Add Below" ("Добавить под") создайте нужные папки (Heading) и пункты содержания (Topic). При добавлении пункта, введите его название в поле "Title", в "Topic ID" – идентификатор раздела справки, на который ссылается этот пункт, в "Help File" – имя файла справки, в котором находится этот раздел. Кнопки "Move Right" и "Move Left" служат для изменения иерархии пунктов. После сохранения содержания, откройте проект справки (*.hpj), нажмите на кнопку "Options", активизируйте закладку "Files" и в поле "Contents file" введите имя файла содержания либо выберите его при помощи кнопки "Browse". Откомпилируйте проект.
На этом создание полноценной справочной системы завершено. Наш маленький, но очень гордый "хелп" имеет удобное содержание и мощную поисковую систему, содержит как текстовую, так и графическую информацию, и даже подписывается при цитировании и распечатке!

Иван Ширко
ishyrko@gmail.com

Постовой: Делайте сайты для людей - услуги копирайтинга

Рубрики: Прочее, Сделай сам | Комментарии (4) »

« Раньше Позже »