Добро пожаловать к нам в гости! Наш сайт посвящён программе NeoBook, с помощью которой вы легко сможете создавать собственные мультимедиа-приложения без необходимости изучать сложные языки программирования! Зарегистрируйтесь, чтобы стать членом нашего сообщества.
Как сделать закладки в книге так, чтобы при закрытии и открытии на главной странице можно было бы сразу перейти к тому месту в книге, где сделал закладку. Спасибо.
Можно запоминать имя или номер страницы, сохраняя их в системный реестр командой RegistryWrite, и потом загружать из реестра - RegistryRead и переходить к нужной странице через GotoPage. Как задавать вопросы
Спасибо...но если несложно- можно чуть подробнее. С NB я недавно общаюсь напрямую- суть понял, нехватает практики. На каком нибудь примере. я думаю это было бы многим интересно.
Запоминам в реестр имя текущей страницы (PageTitle): RegistryWrite "HKEY_CURRENT_USER" "Software\Kniga\Zakladka1" "[PageTitle]" это можете написать в меню Book Properties -> Actions во вкладке Shutdown, тогда эта команда будет выполняться постоянно при выходе из приложения, либо запишите ее в кнопку. Соответственно, закладок может быть несколько, измените имя ключа Zakladka1 для создания новой закладки. --- Возвращаем из реестра данные в переменную Zakladka1 и переход по ней: RegistryRead "HKEY_CURRENT_USER" "Software\Kniga\Zakladka1" "[Zakladka1]" GotoPage "[Zakladka1]" Пишем это в кнопку, жмем ее и читаем дальше. Правда, вначале неплохо было бы проверить, а существует ли закладка по указанному пути в реестре, но это уже другой вопрос. Как задавать вопросы
Добавлено (27 Октябрь 2009, 15:49) --------------------------------------------- Пытаюсь сделать закладки по тибу браузера... Точно по такому же принципу. Создаю верхнее меню. там опция- поставить закладку. Как сделать так, чтобы после нажатия появилось такое же окно с присвоением имени или чтобы просто дабавилась в подменю закладка. И появлялись следующие. Это видимо отдельная тема для отдельного урока)
Как сделать так, чтобы после нажатия появилось такое же окно с присвоением имени или чтобы просто дабавилась в подменю закладка.
Ну для этого надо присвоить закладке уникальное имя. Можно для этого воспользоваться командой "InputBox". А можно задавать имя автоматически используя счетчик, например если последней была закладка "Zakladka1", то у следующей закладки индекс уже будет "2" и т.д.
Добавлено (27 Октябрь 2009, 16:30) --------------------------------------------- А можно поподробней, какая вообще у вас задача? Как вы задаете закладки?
Как сделать так, чтобы после нажатия появилось такое же окно с присвоением имени или чтобы просто дабавилась в подменю закладка.
можно и свое окно сделать, в контейнер положить 2 обеъкта "TextEntry" один для "Названия", другой для "Описания"(по желанию кончно), и кнопку "ОК" А всю конфигурацию хранить в файле(!), и реестр по возможности не загаживать!, всякой "ненужной ватой", чем меньше туда ходу, тем лучше для винды В файл настройки сохранять в такой конструкции Переменая1=значения1 Переменая2=значения2 Потом загрузить а проект можно одной строчкой "LoadVariables"
Сообщение отредактировано sp3d - Вт, 27 Октября 2009, 17:23
Я делаю электронную книгу. Я еще не один вопрос задам для совместного решения))) Просто надо, чтобы пользователь читая книгу мог через всплывающее меню создать закладку, назвать ее, и при случае вызвать или удалить))) Вот я и думаю над реализацией) Спасибо.
Короче, используем реестр (хотя можно и файл, так даже лучше будет) Изучите скрипты написанные в пунктах закладок. На что нужно обратить внимание: - создавать пункты меню из проекта нельзя, их нужно создать заранее самому. Создадим например десяток полей для закладок и скроем их (снять флажок с поля Visible в закладке). - в качестве переменной идентификатора закладки используется поле ItemID, его структура: z1, z2 ... z10. Число после буквы z будем использовать в цикле для обработки закладок в качестве счетчика [C] оборота цикла - сколько будет закладок, столько и обработается. - тот же принцип используем и для имен переменных хранящихся в реестре и имен переменных заголовка закладки: zakl1, zakl2... таким образом через этот номер мы сопоставим друг с другом все нужные переменные. Также это число после будем использовать в цикле для обработки закладок в качестве счетчика [C] оборота цикла - сколько будет закладок zakl в реестре, столько и обработается. - Количество закладок хранится в реестре в ветке Number, туда пишем последний активированный номер закладки - [n]. При первом старте проекта закладок изначально вовсе нет, и попытка чтения этой ветки приведет к вылету окна с ошибкой, т.к. и самой ветки-то еще нет. Поэтому отключите в проекте вывод окон ошибок: Book->Book properties->Access-> снять галочку display error messages. А в самом скрипте отловится окно с ошибкой в условии:
Code
If "[LastError]" ">" "" GotoLine "stop" Endif
и скрипт закончится, загрузки закладок не произойдет. - еще раз, обратите внимание на принцип формирования переменных закладок z и zakl и как в них включаются числа, в этом весь принцип. Скрипт из поля "Закладки" можно убрать на старт проекта: Book->Book properties->Actions->Startup, чтобы не искало каждый раз при открытии меню. Если разберетесь, то сделать пункт удаления закладок не составит труда, иначе смею упрекнуть вас в отсутствии логического мышления.
Добавлено (27 Октябрь 2009, 18:06) --------------------------------------------- и sp3d тоже вариант предлагает неплохой
создавать пункты меню из проекта нельзя, их нужно создать заранее самому.
Да, к сожалению, в готовом скомпилированном проекте можно только менять доступность пунктов главного меню, их видимость, а также содержание (название), но количество пунктов меню и структура меню создаются заранее на стадии проектирования, и остаются неизменными все время работы скомпилированного приложения. Однако, у обоих необушных всплывающие меню (Menu и MenuEx) менять динамически количество и содержимое пунктов можно. - А вам какую операционку поставить - экспи, семерку или висту? - Это ты сейчас о чем? - Олег Георгиевич, вам какой компьютер хотелось бы - молодежный или надежный? - Ну, конечно, надежный! - Вот, значит - экспи, без вопросов! Сейчас сделаем...
(Улицы разбитых фонарей, сезон 10, серия 17)
Единственная инновация Windows 8 это - Metro, чтобы дебилы по иконкам не промахивались!
При модном втюхе модоподдающимся начинает нравиться
Однако, у обоих необушных всплывающие меню (Menu и MenuEx) менять динамически количество и содержимое пунктов можно.
да можно, но как к ним обращатся я так и не понял... Вчера хотел накидать пример по созданию динамического меню, создавал через цикл, но как обратится к каждому элементу не догнал , старею В качестве примера использовал пример из справки НБ, где на каждое нажатие на элемент выскакивает алерт с названием этого элемента, но если честно, дальше не стал ковырятся, были дела....
Имя закладки задается в поле Caption. В моем примере там находятся переменные zakl1, zakl2... zakl10. Этим переменным присваивается значение [PageTitle] - имя текущей страницы: ... setvar "[zakl[n]]" "[PageTitle]" ... Достаточно ввести еще один массив переменных [zakl_name[n]] для хранения имени закладки и вставить всплывающее поле ввода: ... InputBox "Заголовок" "Введите имя закладки" "[zakl_name[n]]" setvar "[zakl[n]]" "[PageTitle]" ... Ну и соответственно организовать хранение этого массива, вставить строчку при записи закладок: RegistryWrite "HKEY_CURRENT_USER" "Software\Kniga\Zak_Name[n]" "[zakl_name[n]]" и загрузке из реестра: RegistryRead "HKEY_CURRENT_USER" "Software\Kniga\Zak_Name[C]" "[zakl_name[C]]"
И поменять поля Caption в закладках, вместо [zakl1], [zakl2]... написать [zakl_name1], [zakl_name2]... и т.д.