RUS  ENG 

gsm (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: Пред. 1 2 3
Вопросы по печати карты (TMapCtrl.PrintPreviewEx).
 
Спасибо
Вопросы по печати карты (TMapCtrl.PrintPreviewEx).
 
Доброго времени суток, уважаемая техподдержка.
Для предварительного просмотра и печати карты я использую метод PrintPreviewEx. Если окно предварительного просмотра закрыть по кнопке, то все корректно отрабатывается, а если закрыть по крестику, то после этого пропадает отображение элементов в слое в памяти и карта перерисовывается только по событию(например при перемещению карты при помощи "руки").

И еще. Мне нужно при печати выводить надпись. Для этого я в слое в памяти создаю объект типа текст
перед вызовом метода PrintPreviewEx, а после вызова этого метода удаляю. Отрабатывается это так. Сначала надпись появляется, а затем, если что-нибудь делать в окне предварительного просмотра, то она исчезает и не выводится на печать. Как мне программно отслеживать закрытие окна предварительного просмотра??? Или есть альтернативный вариант вывода надписи?
Пример я выслал на указанный Вами адрес.
Проблема со слоем в памяти.
 
Пример выслал на указанный адрес.
Использование метода CopyLayer
 
Спасибо
Использование метода CopyLayer
 
Спасибо за ответ. Только это немного не то, что хотелось бы. Есть слой с уже созданными символами у которых есть тип и режим(может я неправильно объясняю, я имею в виду то, что называется типы и режимы в структуре слоя). И вот их и хотелось бы скопировать в слой в памяти. В данном случае получается, что их можно только создавать программно?
И еще... Я нашел временное решение своей задачи в виде создания и удаления простого символа в слое в памяти. И в связи с этим вопрос - создание и удаление символа в слое в памяти - это безболезненная операция? Или в этом случае съедаются ресурсы(например память и т.д).
Проблема со слоем в памяти.
 
Спасибо за ответ. Только не совсем понятно, что присылать. Исходный текст программы? Карту ЗУЛУ? ну и там еще работа с СУБД sybase. Получается что вроде как надо все. Или достаточно только исходного текста программы? И куда присылать?
И можно ли отключить функцию вращения карты?
Проблема со слоем в памяти.
 
Доброго времени суток, уважаемая техподдержка.
Пишу на делфи. Столкнулся со следующей проблемой. Я в слое в памяти отображаю траекторию движения транспортного средства за определенный интервал времени. Когда начинаю вращать карту (CTRL + колесико мыши) у меня программа выдает следующее исключение Project CDPgps.exe raised exeption class EAccessViolation with message 'Access violation at address 00DE40EA in module 'ZuluLib.dll'. Read of address 01991000'. Если изменять масштаб, то этого исключения не возникает. Как временное решение, можно ли у компонента TMapCtrl программно запретить вращение карты по Ctrl + колесико мыши? Заранее спасибо.
Использование метода CopyLayer
 
Спасибо за ответ. Но тогда снова вопрос. Можно ли скопировать в слой в памяти символ с типом и режимом и впоследствии двигать этот символ и менять у него тип и режим? Если да, то подскажите пожалуйста как это сделать. Или копировать можно только простой символ (SimpleSymbol)?
Использование метода CopyLayer
 
Доброго времени суток.
Мне необходимо скопировать структуру из существующего слоя в слой в памяти. Можно ли в этом случае использовать метод CopyLayer? Можно еще привести пример его использования, т.к. по описанию не совсем понятен параметр NewLayerPath - имя нового слоя (путь или URL). Необходимо указывать путь к файлу слоя? А если серверная версия тогда? А если слой в памяти? Есть ли альтенативные решения моей задачи. Заранее спасибо.
Проблемы с переносом элемента в слой в памяти
 
Спасибо, так работает.
Проблемы с переносом элемента в слой в памяти
 
Доброго времени суток!
Мне необходимо отображать положение транспортного средства на карте при просмотре данных из архива и рисовать траекторию движения за указанный временной интервал. Работаю на серверной версии Зулу и положение и траектория движения должны быть доступны только текущему пользователю. Для этого я создаю слой в памяти и копирую в него элемент из слоя транспортных средств следующим образом
// создаем слой в памяти
 lay_arc_ID := MapCtrl1.Map.Layers.AddInMemory('Архив для автомобилей');
 lay_arc := MapCtrl1.Map.Layers[lay_arc_ID];
 lay_arc.Visible := true;

 // получить символ выбранной машины из слоя auto
 id_sym_car := LayerAuto.Elements.Item[key].ElemStyle.SymbolID;
 sym_car := LayerAuto.Symbols.ItemById[id_sym_car];

 // создаем в новом слое объект с заданным символом
 id_sym_arc := lay_arc.Symbols.AddItem(sym_car);  // копируем символ
 key_arc := lay_arc.AddSimpleSymbol(21500,22800,0,id_sym_arc,900,0);  // создаем элемент с данным символом

Почему-то id_sym_car := LayerAuto.Elements.Item[key].ElemStyle.SymbolID выдает 0, хотя данный элемент имеет символ, тип и режим.
И еще. Когда в отладчике id_sym_car присваиваешь нужный символ, то почему-то он не отображается в нужном месте на карте. Что я делаю неправильно? Заранее спасибо.
Мерцание при использовании файла темы.
 
Спасибо за ответ. Убрал MapCtrl1.Redraw, но изменений практически не заметил.
Мерцание при использовании файла темы.
 
Доброго времени суток уважаемые знатоки! Возник вот такой вопрос. Пишу на делфи. Необходимо элементы выбранного слоя с определенными ключами по разному раскрашивать. Это я делаю так
var
 th: Theme;
 file_theme: string;
 nd: PVirtualNode;
 data: ^TStringList;
 tmp_key, res: integer;
begin

 th := CoTheme.Create();
 file_theme := ChangeFileExt(Application.ExeName,'.ztm');
 th.Create(file_theme,'тест',MapCtrl1.Map.Layers.Active.Name);
try
 nd := VT.GetFirst();
 while Assigned(nd) do
 begin
 data := VT.GetNodeData(nd);
  if Assigned(data) and Assigned(data^) then
   begin
     tmp_key := Integer(data^.Objects[1]);
     if tmp_key > 0 then
     begin
       res := vt_CaseTheme(VT_DB, data^.Strings[1]);
       case res of
         0:    // к элементу привязана вся выделенная документация
           begin
             th.Parameter[tmp_key,eThemeLineColor] := clLime;
             th.Parameter[tmp_key,eThemeBorderColor] := clLime;
           end;
         1:    // к элементу привязана часть выделенной документации
           begin
             th.Parameter[tmp_key,eThemeLineColor] := clYellow;
             th.Parameter[tmp_key,eThemeBorderColor] := clYellow;
           end;
         2:    // к элементу из выделенной документации ничего не привязано
           begin
             th.Parameter[tmp_key,eThemeLineColor] := clRed;
             th.Parameter[tmp_key,eThemeBorderColor] := clRed;
           end;
       end;
     end;
   end;
   nd := VT.GetNext(nd);
 end;
 th.Save;
 MapCtrl1.Map.Layers.Active.ThemeName := file_theme;
 MapCtrl1.Redraw;
finally
 th.Close;
end;
Все работает, но при изменении темы наблюдается мерцание. Такое ощущение, что перерисовка делается не один раз. Можно ли как-нибудь избавиться от этого? Заранее благодарен.
Страницы: Пред. 1 2 3