На главную... Продукты | Технологии | Классификаторы | Проекты | Скачать | Цены| Форум | Статьи | Обучение | Контакты

Изменить параметры проекции

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: Пред. 1 2 3 4 5 6 След.
RSS
Изменить параметры проекции, Изменить параметры проекции
 
В идеале,
было-бы не плохо оставить функцию
mapCreateMap(PChar(MapFileName),PChar(RscFileName),a,b);  как есть, она вроде работает хорошо.
и отладить функцию
MapPaspEdit(aMap,'Map',@f);
но чтобы она вызывала файл XML, так как это делает программа ГИС Карта 2011
и шрифты подобрать в этом диалоге такие же, как в ГИС Карта 2011

И этого хватит.
Изменено: Сергей Викторович - 05.05.2017 15:30:25
 
procedure Tform_main.N20Click(Sender: TObject);
Var
f : PTASKPARM;
aMap : HMAP ;
begin
aMap := form_main.mvMap.MapHandle;
f.Language := 2;
f.Resource := 0;
f.HelpName := '';
f.IniName := '';
// f.PathShell := '';
// f.ApplicationName := '';
// f.Handle := 0;
MapPaspEdit(aMap,'Map',@f);
end;

Что не правильно?
screensort12.PNG (5.65 КБ)
 
PTASKPARM - это указатель на структуру:

typedef TTASKPARM *PTASKPARM;

Он у Вас "висит в воздухе".
Кроме того, Вы передаете вместо адреса структуры указатель на указатель - @f
 
Олег Валентинович, добрый день.
Если можно прямо по тексту поправьте, что не правильно в коде.

procedure Tform_main.N20Click(Sender: TObject);
Var
f : PTASKPARM;
aMap : HMAP ;
begin
aMap := form_main.mvMap.MapHandle;
f.Language := 2;
f.Resource := 0;
f.HelpName := '';
f.IniName := '';
f.PathShell := '';
f.ApplicationName := '';
f.Handle := 0;
MapPaspEdit(aMap,'Map',@f);
end;

Напомню, выше приведенный код работает отлично.
Не работает только событие на нажатие кнопки Из XML.
Т.е. не вызывается форма выбора файла XML.
 
 
С указателем в пустоту уже разобрались.
Далее по самой функции MapPaspEdit.
Для вызова диалога выбора параметров СК из XML необходимо задать INI-файл.  Так сложилось исторически и в последующих версиях мы это ограничение уберем.
Существовать этому файлу не обязательно.
Если задан корректный существующий INI-файл карты, то из него берется путь к XML-файлу с параметрами СК (из параметра CurrentXml в разделе "MAPPASP").
Если задан несуществующий INI или в нем отсутствует путь к XML, будет вызван диалог выбора файла XML (crslist.xml).

Примерный код выглядит так:

Код
procedure TfrmMap.BitBtn1Click(Sender: TObject);
var
   f    : TTASKPARM;
   aMap : HMAP ;
begin
  if (not mvMap.Active)
    then exit;

  FillChar(f, sizeof(f), 0);
  f.Language  := cML_RUSSIAN;
  f.PathShell := GTKPChar(GTKString(ExtractFilePath(Application.ExeName)));
  f.IniName   := GTKPChar(GTKString(ExtractFilePath(Application.ExeName)+'.ini'));
  aMap := mvMap.MapHandle;

  if (MapPaspEdit(aMap,GTKPChar(GTKString('Map')), @f) = 0)
    then ShowMessage('Ошибка вызова диалога паспорта карты.'+#10#13+
                     'Либо отмена применения параметров');
end;
 
Да, теперь вроде заработало.
Спасибо.
По поводу ini файла, пусть будет мне он не мешает,
я все равно его создаю именно так, как вы написали в директории исполнительно файла и с его именем.
Я бы еще и усилил, можно было бы сохранять и путь к XML файлу, т.к. он может быть где угодно.
Т.е. ссылку на ini файл в последующих версиях я бы не убирал
Маленькая ремарка,
я вроде нажал кнопку Сохранить, но при выходе меня еще раз переспросили Сохранить, смысл?
screensort13.PNG (4.74 КБ)
 
И еще одна ремарка, думаю посеръезней,
если вызвать диалог Паспорта,
Сохранить.
Потом еще раз вызвать и нажать просто закрыть диалог,
например по кнопке Выход выскакивает это окно, см скриншот  
screensort14.PNG (2.36 КБ)
 
Сообщение с запросом на сохранение отображается, если Вы нажали Выход вместо Сохранить.

Сообщение "Uzor\Ошибка вызова ..." отсутствует в исходных текстах библиотек GIS ToolKit.
Попробуйте найти это сообщение в Ваших исходных текстах.
 
Цитата
Сергей Викторович написал:
ссылку на ini файл в последующих версиях я бы не убирал
Никто и не говорил, что мы его уберем.
Просто его отсутствие не будет препятствием для дальнейшего выполнения.

Цитата
Сергей Викторович написал:
И еще одна ремарка, думаю посеръезней,
если вызвать диалог Паспорта,
Сохранить.
Потом еще раз вызвать и нажать просто закрыть диалог,
например по кнопке Выход выскакивает это окно, см скриншот
Это тот ShowMessage, который я Вам добавил в пример кода (см. выше) в качестве обработки возвращаемого значения от функции MapPaspEdit.
Вы можете обработать код возврата как Вам будет угодно.
В тексте сообщения все, собственно, и написано - нулевой результат возвращается:
а) при ошибке вызова диалога
б) если пользователь в диалоге отказался от применения параметров к паспорту карты.

Аналогичным образом, к примеру, системный диалог открытия файла в Delphi для метода TOpenDialog.Execute возвращает false если диалог был вызван, но пользователь от выбора файла отказался.

Просьба на будущее - на форуме все-таки обсуждать проблемы программирования с использованием GIS ToolKit или интерфейса MAPAPI, а не дискутировать на тему корректности сообщений, выдаваемых в текстах публикуемых тут примеров кода.
 
Цитата
Oleg Belenkov написал:
Сообщение с запросом на сохранение отображается, если Вы нажали Выход вместо Сохранить.

Сообщение "Uzor\Ошибка вызова ..." отсутствует в исходных текстах библиотек GIS ToolKit.
Попробуйте найти это сообщение в Ваших исходных текстах.
По второму вопросу. В исходных текстах прикладной программы нет "Ошибка вызова... " Это точно в GIS ToolKit Проверьте еще раз, пожалуйста.
По первому вопросу. Я написал порядок действий пользователя. Вначале после сделанных изменений смены проекции карты через XML была нажата кнопка Сохранить. Транзакция была выполнена успешна. При нажатии кнопки Выход, выдано сообщение с приглашением Сохранить изменные данные. Я уже их сохранил, зачем еще раз выдавать это сообщение.
По важности решения проблем: второй вопрос очень важный, первый по мере возможности.
Страницы: Пред. 1 2 3 4 5 6 След.
Читают тему (гостей: 1)



© КБ Панорама, 1991-2024

Регистрируясь или авторизуясь на форуме, Вы соглашаетесь с Политикой конфиденциальности