RUS  ENG 

Не обнавляется тематическая раскраска

Страницы: 1
RSS
Не обнавляется тематическая раскраска
 
Пытаюсь в pascal (delphi), сделать консольное приложение. Которое обновит необходимый мне слой, точнее его тематическую раскраску.
пример кода, не понимаю почему не выполняется update раскраски.
Спасибо!


program Test;

{$APPTYPE CONSOLE}

uses
SysUtils,
ZuluOcx_TLB,
ZB_TLB;
const Layer=9;
var
MapCtrl :TMapCtrl;
MapPath :string;
i,buf,id,id_print :integer;

begin
try
MapPath:='---';// Подключаю карту

if MapPath>' ' then begin
MapCtrl:=TMapCtrl.Create(nil);
if MapCtrl.Map.Open(MapPath) then begin
for i := 1 to MapCtrl.Map.Layers.Item[Layer].Themes.Count do begin
buf:=i-1; //номер коллекции начинается с 0, поэтому уменьшаю
id:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeId[buf]; //нахожу id для номера темы из коллекции
id_print:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeFilterId[id]; // нахожу id ФИЛЬТРА ТЕМАТИЧЕСКОЙ РАСКРАСКИ
//MapCtrl.Map.Layers.Item[Layer].Themes.UpdateTheme(id);
//if id_print<>-1 then
writeln(MapCtrl.Map.Layers.Item[Layer].Themes.UpdateTheme(id)); // Тут всегда false не понимаю почему не хочет обновлять. Для найденного id тематической раскраски, пытаюсь обновить.
readln;
end;
end;
end;

except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
 
Проверил конкретную тему MsgBox L.Themes.UpdateTheme(1) Нормально возвращает True
Может не работать, если тема создана не по фильтру, т.е. L.Themes.FilterID(1) = -1 Попробуйте выполнить то же обновление из Zulu. Если там работает, то и программно должно.
 
Проверил конкретную тему MsgBox L.Themes.UpdateTheme(1) Нормально возвращает True
Может не работать, если тема создана не по фильтру, т.е. L.Themes.FilterID(1) = -1 Попробуйте выполнить то же обновление из Zulu. Если там работает, то и программно должно.
 
Lyosha,
Может я что то не правильно понял из документации?
Программно выполняется, через зулу. Выбираю тематическую раскраску,выделив ее в списке и нажимаю кнопку справа - Обновить (работает).

Обращаю внимание, что данные код возвращает =1, а не -1
id_print:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeFilterId[id];


А процедуру UpdateTheme я вызываю с ID тематической раскраски которую получил вот так

for i := 1 to MapCtrl.Map.Layers.Item[Layer].Themes.Count do begin
buf:=i-1; //номер коллекции начинается с 0, поэтому уменьшаю
id:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeId[buf]
 
Lyosha, Поясните вот эти строки вашего сообщения.
На сколько я понимаю нет ни метода ни свойства такого.
Я так понимаю речь шла о ThemeFilterId.

L.Themes.FilterID(1)
 
Да, ThemeFilterId
 
Да, ThemeFilterId
 
Lyosha,
Может я что то не правильно понял из документации?
Программно выполняется, через зулу. Выбираю тематическую раскраску,выделив ее в списке и нажимаю кнопку справа - Обновить (работает).

Обращаю внимание, что данные код возвращает =1, а не -1
id_print:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeFilterId[id];


А процедуру UpdateTheme я вызываю с ID тематической раскраски которую получил вот так

for i := 1 to MapCtrl.Map.Layers.Item[Layer].Themes.Count do begin
buf:=i-1; //номер коллекции начинается с 0, поэтому уменьшаю
id:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeId[buf]

Возможно еще, что используются символьные фильтры. Картинки, что задаются на вкладке Символьные.
 
Пришлите пример с Вашими данными. На [email protected]
 
Lyosha,
program Test;

{$APPTYPE CONSOLE}

uses

SysUtils,
ZuluOcx_TLB,
ZB_TLB;
const Layer=9;
var
MapCtrl :TMapCtrl;
MapPath :string;
i,buf,id,id_print :integer;

begin
try
MapPath:='---';// Подключаю карту

if MapPath>' ' then begin
MapCtrl:=TMapCtrl.Create(nil);
if MapCtrl.Map.Open(MapPath) then begin
for i := 1 to MapCtrl.Map.Layers.Item[Layer].Themes.Count do begin
buf:=i-1; //номер коллекции начинается с 0, поэтому уменьшаю
id:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeId[buf]; //нахожу id для номера темы из коллекции
id_print:=MapCtrl.Map.Layers.Item[Layer].Themes.ThemeFilterId[id]; // нахожу id ФИЛЬТРА ТЕМАТИЧЕСКОЙ РАСКРАСКИ
//MapCtrl.Map.Layers.Item[Layer].Themes.UpdateTheme(id);
if id_print<>-1 then
writeln(MapCtrl.Map.Layers.Item[Layer].Themes.UpdateTheme(id)); // Тут всегда false не понимаю почему не хочет обновлять. Для найденного id тематической раскраски, пытаюсь обновить.
readln;
end;
end;
end;

except
on E: Exception do
Writeln(E.ClassName, ': ', E.Message);
end;
end.
 
Пришлите Ваши данные на [email protected] На чем нам пример запускать? На наших данных все работает. Да, и какая версия программы? (Справка\О программе)
 
Lyosha,
Версия сервера? не понимаю, вопроса. В Delphi Создаю консольное приложение, которое использует библиотеки зулу (ZuluXTools), с помощью выше описанных операторов, пытаюсь произвести обновление тематической раскраски.
Зулу - работает, и перекраска в ней тоже.

А мое консольное приложение не обновляет.
 
Сообщите свой телефон для связи на [email protected]
 
Разобрался!
Использовал для соединения строку MapPath:='zulu://login:password@Адрес:6473/WMS/Pgidrant.zmp';
Соединялось, получал данные о слое или теме - без проблем, но метод обновления слоя не работал.
Изменил на localhost и выполнил *.exe скомпилированный на сервере - работает. В чем причина не понимаю, но консольное приложение делалось для сервера. Поэтому вопрос исчерпан.
Страницы: 1