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

PanTask запуск фоновой Акции

Поиск  Пользователи  Правила  Войти
Форум » Настольные приложения » GIS ToolKit, GIS ToolKit Active, ГИС Конструктор для Windows
Страницы: 1 2 След.
RSS
PanTask запуск фоновой Акции, создание корректнойакции без прявязки к кнопке
 
Здравствуйте господа разработчики !

Имеется панель, которая не предусматривает кнопку для СОВЕГО сообщения ХХХХ
Нужно создать объект TAction.

Простыми словами, как создать объект TAction который корректен для среды ГИС Карта 2011 и не требует нажатия кнопки (точнее кнопки вообще нет)

П.С. я понимаю что кудато нужно чтото отправить и ГИС Карта сама вызовет utsCheckAction но как это сделать ?
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Например, отправить сообщение WM_COMMAND с идентификатором задачи окну карты.
 
Первое что я попробовал отправка  (AW_SETCOMMAND = $642) на myTask->FHMainWindow , 0 (ноль) реакции.
Нужен перечень параметров сообщения AW_SETCOMMAND
----
слал во так:
SendMessage(FHMainWindow , $0642, WParam(myTask->GetTaskIdent), LParam(идентификатор_моей_кнопки));
где...
идентификатор_моей_кнопки - создаётся как отдельная, полноценная кнопка, которой нет на панели с параметрами:
->enable=1  , ->command = идентификатор_моей_кнопки
Кнопка "сканируется" при старте, "жива" для ГИС Карты
При посылке сообщения, ГИС Карта не вызывает utsGetAction и utsEnableAction.
Она вообще ничего не вызывает кроме utsPrepareMessage который и без того постоянно вызывается
Изменено: KFF - 31.12.2013 18:55:48
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
Вместо посылки сообщений и разбора их параметров надо пользоваться методами классов TPanTask и TPanWindow

// ===========================================================
// Нажать кнопку для команды id
// При ошибке возвращает ноль (не найдена кнопка)
// ===========================================================
  function  TPanWindow.PressButton(id : integer): integer;
  begin
   result := MainMessage(AW_SETCOMMAND,id,1);
  end;
// ===========================================================
 
Если все в перделах одной задачи и Задача получила управление, то Запускать Акцию или нет, принимает решение ваша Задача создавая и регистрируя TAction. Задача может получить Управление либо когда она стартует как потоковая, либо по нажатию кнопки.
 
Андрей Владиславович, устройство и работу задачи по технологии panTask я очень прекрасно знаю, включая работу "акций".
----
ситуация.
Допустим, имеется стандартная задача (например измерения по карте - Ctrl+F5)
Я нажимаю кнопку "А"  у меня открывается форма (через SHOW) то есть ГИС Карта доступна
В форме, при нажатии кнопки на НЕЙ!!! нужно организовать ВЫБОР!!! объекта.

Вопрос, как это сделать?

Напоминаю: уже запущен обработчик по кнопке "А" !
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
После нажатия кнопки в форме стартуете TPanAction по такой же технологии как будто нажата кнопка на панели (вызывая CheckActionEx).
Обращаю внимание на то, что кнопки нет, но уникальный идентификатор для этого режима в задаче должен быть.
Далее в TPanAction есть метод SelectObject, который вызывается при выборе объекта карты.
 
Для запуска обработчика команды нужно послать сообщение WM_COMMAND с идентификатором кнопки.
Сообщение WM_COMMAND имеет значение:

#define WM_COMMAND 0x0111

Сообщение лучше посылать окну карты, а не главному окну - TPanWindow.SendTaskMessage().
 
Спасибо, это что-то новенькое, сейчас попробую =)
------
дописал
Код
procedure TTestForm.Button1Click(Sender: TObject);
begin
  SendMessage(FCurrentTask.FHMainWindow , $0642 , WParam(ANI_IN_OBST), LParam(1));
  FCurrentTask.FMapWindow.SendTaskMessage($0111 , WParam(ANI_IN_OBST), LParam(1)); // строку
end;

Не работает
Прошу дать полный код что и куда слать, можно на языке С++.
Изменено: KFF - 13.01.2014 00:05:13
Не тот глуп кто не знает, а тот, кто не знает где искать.
 
После выдачи

FMapWindow.SendTaskMessage(WM_COMMAND, идентификатор моего режима в моей задаче, 0)

в моей dll вызывается utsGetAction в которой создаю обработчик.

Тренировался на модифицированном примере прикладной задачи для Delphi из SDK  к ГИС Карта 2011
Страницы: 1 2 След.
Читают тему (гостей: 1)



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

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