Форум
Написать нам
  • Страница 1 из 1
  • 1
Модератор форума: as-master  
Сохранение позиции просмотра презентации
MorseliotДата: Вторник, 23 Марта 2010, 20:01 | Сообщение # 1
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
Привет всем! Начну тему пожалуй с небольшого выражения благодарности всем кто на этом замечательном сайте посвященному чудо программе MMB, оказывает интеллектуальную помощь и содействие в рассмотрение различного типа вопросов.

Как и всегда! Столкнулся вот с таким вот вопросом...
возможно ли посредством программы задать на какую либо кнопочку скрипт или еще что, что-бы при нажатии программа сохраняла слайд на котором в данный момент находится обозреватель в отдельную директорию, что бы в последущем можно было бы, продолжить обозрение с того самого места в котором эта кнопочка была нажата.

Пример: У меня к примеру 40 страниц, каждая из них содержит какую либо информацию, не просмотрев страницу 3(пример) ты не перейдешь на страницу 4(Пример). Человек просмотрев 30 страниц, устал, и решил закрыть искомую программу, но при повторном включение оно естественно выдаст все с самого начала. Так-вот, как сделать так что при силовом воздействие на (X комманду) место на котором остановился обозреватель сохранилось( возможно создало дубликат,начало которого будет брать с последнего момента сохранения), либо как-то еще... что-бы не просматривать все слайды по новому кругу , а продолжить просто продолжить в любое другое удобное время....
Заранее спасибо, чертовски интересный вопрос...

Я пока жду ответа, придумал уже кое-какой способ, но он тоже требует рассмотрения, может даже кому будет полезен...

Сообщение отредактировал Morseliot - Среда, 24 Марта 2010, 02:32
 
YURIYДата: Среда, 24 Марта 2010, 02:39 | Сообщение # 2
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
В первую очередь, очень не советую делать отдельно страницу под каждый слайд. Это неправильно, лучше делать всё на одной. В крайнем случае не нескольких, в зависимости от ситуации.

Если следовать моему совету, то здесь задача состоит в том, чтобы узнать какой слайд смотрит пользователь (это уже зависит от того, как Вы сделаете презентацию), далее создаётся скрипт с названием CBK_EXIT (про него советую почитать в справке, есть тонкости). Он сам выполняется во время закрытия программы и там можно будет указать сохранение номера текущего слайда в файл. Команда StrToFile. А также можно обойтись без файла и сохранить номер страницы в реестре. Команда SaveVariable. Но лучше не засорять реестр пользователя. Не советую.

Затем, при старте проекта заготовим код, который читает значение из файла(StrFromFile)/реестра(LoadVariable) и показывает нужный слайд.

Если не следовать моему совету и оставить 40 страниц.

Создаём CBK_EXIT. Используя константу CBK_PageName узнаём на какой странице пользователь сейчас и сохраняем указанным выше методом. При старте проекта считываем название страницы и делаем переход на неё через команду Page.

Вот и вся теория. Реализовать это всё очень просто. Про неизвестные команды и CBK-константы можно прочитать в справке, там всё отлично написано. И на русском.

Считаю, что описал всё довольно подробно. Возникнут трудности - к Вашим услугам, пишите вопросы сюда :)

Успехов!



Вечная память Андрею Сергееву!
 
MorseliotДата: Среда, 24 Марта 2010, 03:02 | Сообщение # 3
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
таааак.....

Добавлено (24 Март 2010, 02:59)
---------------------------------------------
ОГРОМНЕЙШЕЕ СПАСИБО! СОХРАНЕНО УЙМА РАБОЧЕГО ВРЕМЕНИ! Все понятно как 2 на 2, осталось только испытать.

Quote (YURIY)
очень не советую делать отдельно страницу под каждый слайд

Какие с этим могут возникнуть проблемы?
Как вы могли уже заметить я естественно не программист, но заставлять что-то оживать или работать приносит большое удовольствие,
Quote (YURIY)
далее создаётся скрипт с названием CBK_EXIT
по по воду названия скрипта, я ведь правильно понял, это просто название и ничего другого? Сейчас небольшой набросок сделаю, надо протестить...

Добавлено (24 Март 2010, 03:02)
---------------------------------------------
StrToFile- я так понимаю это Save Target to file, а какие параметры ему вписивать в скобки, можно на прмере это рассмотреть? или там просто указывается путь к директории?

Выдает ошибку о неправильном вводе тэга...

Сообщение отредактировал Morseliot - Среда, 24 Марта 2010, 03:04
 
YURIYДата: Среда, 24 Марта 2010, 03:09 | Сообщение # 4
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Quote (Morseliot)
Какие с этим могут возникнуть проблемы?

Просто так не делается. И машинных ресурсов больше займёт. Да и не удобно редактировать такой большой проект. Но впрочем, можно и так. Дело Ваше :)

Quote (Morseliot)
по по воду названия скрипта, я ведь правильно понял, это просто название и ничего другого?

Да. И расположить его нужно в определённом месте проекта. Не буду повторяться, в справке написано.

Quote (Morseliot)
StrToFile- я так понимаю это Save Target to file

String To File

Quote (Morseliot)
а какие параметры ему вписивать в скобки, можно на прмере это рассмотреть?

Там нечего рассматривать, честно говоря. Есть проекты на сайте, есть справка. Сложного ни грамма. 4 параметра. Советую открыть справку, там есть свои нюансы.

http://mmbuilder.ru/load/42-1-0-498



Вечная память Андрею Сергееву!
 
MorseliotДата: Среда, 24 Марта 2010, 05:59 | Сообщение # 5
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
Я уже понаоткрывал и уже читаю, главное где понятно, Спасибо огромное!
Всего доброго!

Добавлено (24 Март 2010, 05:16)
---------------------------------------------

Quote (YURIY)
Затем, при старте проекта заготовим код, который читает значение из файла(StrFromFile)

Подошел я к этому и уперся в стену... Все делал по инструкциям из справочника...

Code
file$='c:\test.txt'

fromline= 1

numoflines=1

ReturnStr$=StrFromFile(file$,fromline,numoflines)

К примеру он прочитал из сохраненного мною благодаря константе CBK_exit .txt файл, а как дальше ему присвоить переход на нужную страницу? так и стоит все...

"CBK_EXIT"

Code
file$='C:\test.txt'
String$='CBK_PageName'
RetVal=StrToFile(file$,String$,TRUE,FALSE)
file$='c:\temp\test.txt'
For i=1 To 10
string$= 'Line ' + CHAR(i)
ReturnVal=StrToFile(file$,string$,TRUE,TRUE)
Next i
Exit()

Я знаю я не силен в этом, но создать сохранение кровь из носа как надо...(

Добавлено (24 Март 2010, 05:59)
---------------------------------------------
Кое какие ошибки я нашел... на CBK_EXIT код изменил, теперь он в текстовый редактор кидает стринг со значением CBK_PageName у меня в данном случае Page 1...

"CBK_EXIT"

Code
file$='C:\test.txt'
String$= CBK_PageName
RetVal=StrToFile(file$,String$,TRUE,FALSE)

Exit()

Отдельному слайду я присвоил....

Code
file$='c:\test.txt'
ReturnStr$=StrFromFile(file$,0,0)

Я так понимаю что при включение этого слайда он должен прочитать STRING$ из директории... допустим он это сделал, а как теперь его запустить на переход к той странице что присвоил себе ReturnStr$....?

 
YURIYДата: Среда, 24 Марта 2010, 21:42 | Сообщение # 6
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Начну с последней части сообщения.

Quote (Morseliot)
"CBK_EXIT"

Код правильный. Сохраняет в файл имя текущей страницы. Но есть одно но.

Quote (Morseliot)
StrToFile(file$,String$,TRUE,FALSE)

Нельзя здесь использовать TRUE FALSE. Читайте справку. При каждом закрытии, имя страницы будет дописываться в конец файла, а нам нужно ПЕРЕзаписывать файл. Поэтому, флаги должны быть FALSE FALSE. Иначе закроется проект 3 раза и файл будет иметь вид Page1 Page2 Page3.

Quote (Morseliot)
Отдельному слайду я присвоил....

Нужно присваивать не отдельному, а первой странице. С неё запускается проект и её код выполняется первым.

Quote (Morseliot)
ReturnStr$=StrFromFile(file$,0,0)

Вы внимательно читали справку? Цитата:

Quote
StrFromFile(ИмяФайла$,НомерСтроки,ЧислоСтрок)

Вот Вы написали код - прочитать начиная с нулевой строки ноль строк. Это как?

Quote (Morseliot)
допустим он это сделал, а как теперь его запустить на переход к той странице что присвоил себе ReturnStr$

Я же писал уже:

Quote (YURIY)
При старте проекта считываем название страницы и делаем переход на неё через команду Page.

А теперь корректировки к скрипту при старте проекта. У меня он вышел вот таким:

Code
If (a=0) Then
    file$='c:\test.txt'
    ReturnStr$=StrFromFile(file$,1,1)
    a=1
    Page("ReturnStr$")
End

Объясняю, зачем втулил сюда условный оператор. Представьте ситуацию, что человек вышел прямо с первой страницы, она сохранилась в файл. Запускается проект заново и считывает, какую страницу ему показать. А так как она первая - этот код будет повторяться бесконечное число раз за счёт команды Page, которая будет постоянно открывать первую страницу, и зациклится.

Что сделал я. Если переменная никогда в проекте не объявлялась, она имеет значение 0 при обращении к ней. Чем я и воспользовался. Условие a=0 истинно в любом случае, теперь считываем название страницы из файла, переменной a присваиваю единицу, чтобы этот код уже больше никогда не выполнился и делаем переход на нужную страницу.

Всё. Будьте внимательнее :)



Вечная память Андрею Сергееву!
 
MorseliotДата: Четверг, 25 Марта 2010, 15:15 | Сообщение # 7
Поднаторевший
Группа: Проверенные
Сообщений: 77
Репутация: 0
Награды: 0
Статус: Offline
Справился, ОГРОМНЕЙШЕЕ СПАСИБО!!!!!!
 
YURIYДата: Четверг, 25 Марта 2010, 18:20 | Сообщение # 8
Злостный админ
Группа: Администраторы
Сообщений: 3018
Репутация: 71
Награды: 28
Статус: Offline
Не за что :)


Вечная память Андрею Сергееву!
 
  • Страница 1 из 1
  • 1
Поиск: