Jump to content

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


Recommended Posts

Функция назначенная на выполнение при активации элемента типа :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;

}

post-68237-0-51331800-1492770526.jpg

popuptst.LSP

Link to comment
Share on other sites

криво код скопировали что ль откуда..

;; (action_tile "pop3" "(popact \"pop3 value pop3=\" (get_tile \"pop3\"))")

что это на 30 стороке?

defun должен заканчиваться

  (unload_dialog dcl));

popuptst.LSP

Edited by Ivanco
  • Like 1
Link to comment
Share on other sites

defun должен заканчиваться

(unload_dialog dcl));

Он и заканчивается. закрывающаяся скобка на строке с unload.

 

 

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

Link to comment
Share on other sites

или это какая то особенность nano или это проблема платформы.

в AutoCAD это же код работает нормально.

а здесь как будто событие выбора элемента списка из формы сразу отрабатывает при инициализации формы.

если прописать в .DСL

:popup_list {
key = "pop2";
label = "pop";
value = "";
}

событие не отрабатывает сразу.

Edited by Ivanco
Link to comment
Share on other sites

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

value = "";

 

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

 

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

 

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

 

 

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

Link to comment
Share on other sites

  • 1 month later...

Создал в багтрекере Клуба разработчиков дефекты #305, про вызов события при загрузке, и #306, про вызов события при программной установке текущего значения.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
 Share

  • Tell a friend

    Love Официальный форум компании Нанософт? Tell a friend!
×
×
  • Create New...