Аналитика
http://www.geosystema.net/forum/

Запрос на функцию
http://www.geosystema.net/forum/viewtopic.php?f=1&t=49
Страница 35 из 92

Автор:  Alex3 [ 16 сен 2011 00:02 ]
Заголовок сообщения:  Re: Запрос на функцию

Sergey Oleynik писал(а):
Не совсем понятно, где это все хранить. Я имею в виду тексты скриптов?
Просто дать возможность добавлять такие скрипты в любую кнопку, по аналогии с OnSelect или OnChange?
Тогда они будут срабатывать на открытие любой карты.
Если хранить в DMF, то OnFileOpen сработает только для той карты, в которой есть скрипт, а такие как StartUp, вообще теряют смысл.

Я предлагаю разделить эти скрипты на две группы:
1 группа) общие скрипты дижиталса (хранить, например, в файле Digitals.dsf в корне программы). В этом файле могут быть определены:
%Events.StartUp - функции, выполняемые один раз после запуска дижиталс
%Events.OnFileOpen - функции, выполняемые после открытия каждой карты,
%Events.OnFileNew - функции, выполняемые после создания каждой новой карты,
%Events.OnFileClose - функции, выполняемых до начала закрытия каждой карты,
%Events.OnFileExit - функции, выполняемые перед закрытием оболочки дижиталса

2 группа) скрипты конкретной карты (хранить в карте, назначать в свойствах карты, не на кнопки).
%Events.OnFileOpen - функции, выполняемые после открытия конкретной карты,
%Events.OnFileSave - функции, выполняемые до начала записи конкретной карты,
%Events.OnFileClose - функции, выполняемых до начала закрытия каждой карты,

Следует заметить, что обработчики событий 1 и 2 группы могут включать обработчиков событий объектов, например в следующем коде в секции %Events.StartUp определяются два обработчика - для сбора и редактирования объектов всех карт:
Код:
%Events.StartUp
%Events.Collect
;код обработки сбора нового объекта
%Events.OnChange
;код обработки при редактировании объекта
...
%Events.OnFileNew
;код обработки при создании новой карты
...

думаю, идея понятна.

Автор:  Bondarets Alexander [ 16 сен 2011 15:41 ]
Заголовок сообщения:  Re: Запрос на функцию

Цитата:
%Events.StartUp - функции, выполняемые один раз после запуска дижиталс
%Events.OnFileExit - функции, выполняемые перед закрытием оболочки дижиталса


Расскажите зачем вам события старта и закрытия программы? Поприветствовать и попрощаться с пользователем?

Автор:  Sergey Oleynik [ 16 сен 2011 16:32 ]
Заголовок сообщения:  Re: Запрос на функцию

Добавлены события (на кнопке):

%Events.OnStartup
%Events.OnShutdown
%Events.OnFileOpen
%Events.OnFileClose
%Events.OnFileSave
%Events.OnFileNew

Автор:  Alex3 [ 18 сен 2011 23:01 ]
Заголовок сообщения:  Re: Запрос на функцию

Bondarets Alexander писал(а):
Расскажите зачем вам события старта и закрытия программы? Поприветствовать и попрощаться с пользователем?

:). Я думал вы сообщения до конца читаете - там пример кода.
Sergey Oleynik писал(а):
Добавлены события (на кнопке)...

Поражает скорость реакции на предложения. здОрово!
Но всё-таки кнопки относятся к рабочему столу, а рабочий стол каждый может изменить. Для группы людей, работающих с одной картой,
настройка и поведение диджиталса на рабочих местах должны определяться администратором, а рабочий стол каждый может настроить для себя сам.
В моём случае я должен быть уверен, что после настройки и передачи дижиталса в работу операторам, дижиталс будет работать так, как я его настроил.

Автор:  Bondarets Alexander [ 19 сен 2011 18:31 ]
Заголовок сообщения:  Re: Запрос на функцию

Alex3 писал(а):
В моём случае я должен быть уверен, что после настройки и передачи дижиталса в работу операторам, дижиталс будет работать так, как я его настроил.


Запретите запись в файл Digitals\Ged.ini, все настройки программы хранятся там. Для файловой системы NTFS это несложно реализовать. Запрет записи не должен вызывать ошибку в самой программе... вроде бы :)

Среди минусов: не будет изменяться список последних открытых файлов, нельзя будет изменить цвет фона и шрифты в программе и прочие мелкие неудобства.

Автор:  Alex3 [ 20 сен 2011 11:15 ]
Заголовок сообщения:  Re: Запрос на функцию

Спасибо, попробую.
Кнопки пользовательского меню вроде в другом файле задаются.

Автор:  paul [ 03 окт 2011 10:15 ]
Заголовок сообщения:  Re: Запрос на функцию

Мне нужна кнопочка, с помощью которой выполнялось следующее:
1. Сервис|Вставить дороги.
2. В окошко вставлялось значение 3 (для другой кнопочки 4) и т.д.
3. Нажималась кнопка ОК.
То есть, нужна панелька для вставки дорог разной ширины. Спасибо.

Автор:  Dmitry_Zolotar [ 03 окт 2011 11:20 ]
Заголовок сообщения:  Re: Запрос на функцию

Пример для 3-метровой дороги
Код:
;Команда SendChars отправляет нажатия клавиш следующему за ней диалоговому окну, <CR> - возврат каретки
@SendChars 3<CR>
Сервис | Вставить дороги...

Автор:  paul [ 03 окт 2011 12:14 ]
Заголовок сообщения:  Re: Запрос на функцию

Все работает. Благодарю за оперативность.

Автор:  Denidz [ 31 окт 2011 14:58 ]
Заголовок сообщения:  Re: Запрос на функцию

подскажите пожалуйста как вытянуть смежника из хмл, а то у меня скоро взрыв мозга будет.
хмл- <AdditionalInfoBlock><AdditionalInfo>Г-А, землі гр. Войтенко о.І. (вул. Перемоги, 84)</AdditionalInfo></AdditionalInfoBlock> все это находится в параметре с ID7001004.
нужно чтоб в параметре который я создам было так - землі гр. Войтенко о.І. (вул. Перемоги, 84)
заранее благодарен.

Автор:  Dmitry_Zolotar [ 31 окт 2011 15:24 ]
Заголовок сообщения:  Re: Запрос на функцию

Denidz писал(а):
подскажите пожалуйста как вытянуть смежника из хмл, а то у меня скоро взрыв мозга будет.
хмл- <AdditionalInfoBlock><AdditionalInfo>Г-А, землі гр. Войтенко о.І. (вул. Перемоги, 84)</AdditionalInfo></AdditionalInfoBlock> все это находится в параметре с ID7001004.
нужно чтоб в параметре который я создам было так - землі гр. Войтенко о.І. (вул. Перемоги, 84)
заранее благодарен.

Создайте параметр
=XPT(P[ID7001004],"AdditionalInfo") Название параметра

Автор:  voha [ 01 ноя 2011 12:44 ]
Заголовок сообщения:  Re: Запрос на функцию

Sergey Oleynik писал(а):
voha писал(а):
А чи можна було б вказувати ID шару, ще й для функцій @Map.Layers.GetValidParameters, @Map.Layers.SetValidParameters?
Сделано.
Перепрошую за настирливість. Здається за необхідне, все-таки вказувати ID параметрів в функціях @Map.Layers.GetValidParameters, @Map.Layers.SetValidParameters та у всих функціях, що мають за параметри шар чи параметр.
Необхідна унікальність при ідентифікації шару чи параметра.
Якщо список шарів (список параметрів) міняється - відповідно міняється їх порядковий номер.
Отже @Map.Layers.SetValidParameters LayerIndex NumberList-Изменяет список доступных слою параметров, например @Map.Layers.SetValidParameters ID1 ID3 ID7 ID11 :?:

Автор:  voha [ 02 ноя 2011 18:35 ]
Заголовок сообщения:  Re: Запрос на функцию

voha писал(а):
вказувати ID параметрів в функції @Map.Layers.SetValidParameters
Зроблено :!: . Чемно дякую :D.

Автор:  voha [ 03 ноя 2011 01:48 ]
Заголовок сообщения:  Re: Запрос на функцию

Перечитав від а до я тему "Створення звітів Reports", і не тільки. Ніде не знайшов відповіді на питання:
функція @ReportGenerator 0/1 - Готовит данные для генератора отчетов и копирует в буфер (0 - не запускать генератор) аналогічно пункту меню Сервіс>Генератор звітів, а при ключу 1 - ще й запускає Reports. Якщо в Reports.ini в блоці [MainForm] значення AutoPrepare=1, формується звіт CurrentDoc='останній звіт, що колись формувався'.
Саме питання - чи можна/варто додати параметр функції - шлях до шаблона *fr3 :?: Це дало б можливість зформувати визначений у скрипті Digitals звіт без втручання користувача і без додаткового коду правки Reports.ini перед викликом @ReportGenerator. Кортить же, зробити "як краще" :oops:

Автор:  Dmitry_Zolotar [ 03 ноя 2011 09:28 ]
Заголовок сообщения:  Re: Запрос на функцию

voha писал(а):
Перечитав від а до я тему "Створення звітів Reports", і не тільки. Ніде не знайшов відповіді на питання:
функція @ReportGenerator 0/1 - Готовит данные для генератора отчетов и копирует в буфер (0 - не запускать генератор) аналогічно пункту меню Сервіс>Генератор звітів, а при ключу 1 - ще й запускає Reports. Якщо в Reports.ini в блоці [MainForm] значення AutoPrepare=1, формується звіт CurrentDoc='останній звіт, що колись формувався'.
Саме питання - чи можна/варто додати параметр функції - шлях до шаблона *fr3 :?: Це дало б можливість зформувати визначений у скрипті Digitals звіт без втручання користувача і без додаткового коду правки Reports.ini перед викликом @ReportGenerator. Кортить же, зробити "як краще" :oops:

Виклик Reports.exe з ключом -template та ім'ям шаблону запустить генератор звітів з прихованою лівою панеллю(не можливо обрати інший шаблон) та сгенерованим звітом для обранного шаблона.
Приклад:
Код:
;Путь к ged.exe
$PP=@ProgramPath
;Полное имя файла Reports.exe
$ReportsPath=$PP\Reports.exe
;Полное имя вызываемого шаблона
$TFN=$PP\Templates\Catalog.fr3
;Подготовка данных для генератора отчетов
@ReportGenerator 0
;Строка запуска генератора отчетов с шаблоном
$CL=$ReportsPath -template$TFN
;Запуск
@Run $CL

Страница 35 из 92 Часовой пояс: UTC + 2 часа
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
http://www.phpbb.com/