Форум Блог
pix

Относительные ссылки в Hotlink с использованием внешнего вьювера документов

При переносе проекта Arcview на диск для дальнейшего распространения, часто встает вопрос,
как сделать так, чтобы он (проект) открывался не зависимо от того, где находится или какой буквой на компьютере пользователя обозначен CD-ROM. Решается эта проблема просто и об этом много написано. С помощью одного из специальных расширений или вручную в любом текстовом редакторе, абсолютные (то есть начинающиеся с буквы дисковода) ссылки, например такие,

c:\data\theme1.shp

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

С хотлинком, который использует встроенные скрипты для открытия, например изображений, тоже все работает как надо, если в атрибутивной таблице пути относительные (вида images\photo1.tif, именно без косой черты в начале ), тогда при подключения хотлинка и указания в поле Predefined Action - Link to Image File все будет работать как надо.

Однако есть более сложная проблема, а что делать с хотлинком на внешний скрипт (например для использования внешнего просмотровщика для картинок)? Ведь для правильной его работы в таблице должен быть прописан абсолютный путь.

Проблема только кажется сложной и решается очень просто. Ссылки в таблице остаются относительными как приведено выше.

Создаем в проекте, который собираемся записывать на CD новый скрипт следующего содержания (загрузить) и переименовываем его в проекте (Project\Rename 'Script1') в View.Hotlink:

theView = av.GetActiveDoc
found = false
p = theView.GetDisplay.ReturnUserPoint
for each t in theView.GetActiveThemes
if ((t.HasAttributes) and (t.GetHotField <> nil)) then
recs = t.FindByPoint(p)
for each rec in recs
theField = t.GetHotField
found = true
theVal = t.ReturnValueString(theField.GetName, rec)
'все изменения системного скрипта в этой строке
av.Run(t.GetHotScriptName, FileName.GetCWD.asstring+"\"+theVal)
end
end
end
if (not found) then
System.Beep
end

А для подключения внешнего просмотровщика скрипт остается прежним (загрузить). Только не забудьте изменить в нем путь к просмотровщику. Сам вьювер также можно положить на диск с проектом, тогда вместо строки

System.Execute("c:\Tools\iview\i_view32.exe"++theVal)

нужна будет строка

System.Execute(FileName.GetCWD.asstring + "\" +"i_view32.exe"++theVal)

и вьювер (в нашем случае IrfanView) должен будет лежать на одном уровне с проектом. Если он находится в любой другой папке, например она специально для него создана, просто замените "\" на название этой папки, например "\viewers\".

*Совет: что изображение автоматически не масштабировалось (Set scale был всегда выключен), используйте этот скрипт. Он должен называться Link.ImageFile

Последнее обновление: August 01 2007
(Наверх)

E-mail: 3 цифры: Введите 3 цифры с картинки в поле
Комментарий, вопрос, ошибка: (?)

Если Вы обнаружили на сайте ошибку, выберите фрагмент текста и нажмите Ctrl+Enter (?)

О нас : Статьи : Программы : Форум (все) : Документация : Контакты : Участие : English

Новости сайта:(?)

Компьютеры Краснодар; Компьютеры Перми; Мониторы, принтеры сканеры. Сравнение цен на компьютеры Самара.; Компьютеры в Челябинске