Перейти к содержимому


LISP/DCL Проблема с popup_list

lisp dcl

Сообщений в теме: 6

#1 alex-jt

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 21 Апрель 2017 - 13:33

Функция назначенная на выполнение при активации элемента типа :popup_list, выполняется не только при активации данного элемента, но и сразу же при запуске основного модуля.
Функции назначенные на выполнение при активации элементов типа :list_box, :button выполняется, как и положено, только при активации элемента на который они назначены.
Протестировано на NCadSDK81_3712.2221.3574. В приложении тестовый пример и скрин результата.
После старта приложения popuptst , не дожидаясь активации раскрывающегося списка POP2 , сразу же появляется ответ функции popact, как будто элемент :popup_list pop2 был активирован.
Как сделать так, что бы функции назначенные на элементы типа :popup_list выполнялись ТОЛЬКО при активации соответствующих элементов ?

DCL файл почему-то запрещено присоединять к сообщению.
Вот его текст.
popuptst.DCL
popuptst : dialog {
label = "Тест выпадающих списков";
width = 30;
//:popup_list {
:list_box {
key = "pop1";
label = "pop1";
}
:button {
key = "bpop1";
label = "get 1";
}
:popup_list {
key = "pop2";
label = "pop2";
}
:button {
key = "bpop2";
label = "get 2";
}
:popup_list {
key = "pop3";
label = "pop3";
}
:button {
key = "bpop3";
label = "get 3";
}

ok_cancel;
}

Прикрепленные файлы

  • Прикрепленный файл  popuptst.jpg   39,08К   0 Количество загрузок:
  • Прикрепленный файл  popuptst.LSP   1,11К   4 Количество загрузок:


#2 Ivanco

    Дилер

  • Дилеры
  • PipPipPipPip
  • 235 сообщений
  • Пол:Мужчина
  • Город:Красноярск
  • Интересы:САПР

Отправлено 21 Апрель 2017 - 14:08

криво код скопировали что ль откуда..
;; (action_tile "pop3" "(popact \"pop3 value pop3=\" (get_tile \"pop3\"))")
что это на 30 стороке?
defun должен заканчиваться
  (unload_dialog dcl));

Прикрепленные файлы

  • Прикрепленный файл  popuptst.LSP   1,1К   1 Количество загрузок:

Сообщение отредактировал Ivanco: 21 Апрель 2017 - 14:10

"ИнфоИндастри" г.Красноярск,г.Иркутск,г.Владивосток-официальный дилер Нанософт
YouTube,GitHub - Ivanco21, using:C#/MultiCAD.NET

#3 alex-jt

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 21 Апрель 2017 - 14:20

defun должен заканчиваться
(unload_dialog dcl));
Он и заканчивается. закрывающаяся скобка на строке с unload.


30 строка закоментирована что бы показать что на "buton" автоматического срабатывания не происходит. Если раскоментировать, то будет ДВА срабатывания на pop2 и на pop3.

#4 dows

    Активист

  • Продукт-менеджеры
  • PipPipPipPip
  • 2 470 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:САПР

Отправлено 21 Апрель 2017 - 19:09

разрешил добавлять dcl
С уважением,
Денис Ожигин

Сайты: www.archicad.ru, www.nanocad.ru

#5 Ivanco

    Дилер

  • Дилеры
  • PipPipPipPip
  • 235 сообщений
  • Пол:Мужчина
  • Город:Красноярск
  • Интересы:САПР

Отправлено 21 Апрель 2017 - 19:53

или это какая то особенность nano или это проблема платформы.
в AutoCAD это же код работает нормально.
а здесь как будто событие выбора элемента списка из формы сразу отрабатывает при инициализации формы.
если прописать в .DСL
:popup_list {
key = "pop2";
label = "pop";
value = "";
}
событие не отрабатывает сразу.

Сообщение отредактировал Ivanco: 21 Апрель 2017 - 20:20

"ИнфоИндастри" г.Красноярск,г.Иркутск,г.Владивосток-официальный дилер Нанософт
YouTube,GitHub - Ivanco21, using:C#/MultiCAD.NET

#6 alex-jt

    Новичок

  • Пользователи
  • Pip
  • 3 сообщений

Отправлено 24 Апрель 2017 - 09:51

Да, действительно при начальной установке
value = "";

при инициализации формы событие не отрабатывает. Однако при программной установке значения при помощи (set_tile "pop2" "0") событие вновь отрабатывается при инициализации. Более того, при программной установке значения list_box, при инициализации отрабатывает событие и на этот элемент.

Если это особенность nano, то это очень печально, т.к. адаптировать ACAD приложения использующие эти элементы будет крайне проблематично.

Очень хочется надеяться что это проблема платформы и разработчики сделают работу элементов типа list_box и popup_list аналогичной с ACAD.


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

#7 ISL

    Клуб разработчиков

  • nanoSoft
  • PipPipPipPip
  • 358 сообщений
  • Пол:Мужчина
  • Город:Москва
  • Интересы:Разработка САПР

Отправлено 06 Июнь 2017 - 20:52

Создал в багтрекере Клуба разработчиков дефекты #305, про вызов события при загрузке, и #306, про вызов события при программной установке текущего значения.
Пишешь приложения под САПР на С++, .NET, COM, Lisp? Вступай в Клуб разработчиков nanoCAD.





Количество пользователей, читающих эту тему: 1

0 пользователей, 1 гостей, 0 скрытых пользователей