|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
2 варианта получения значения списка в диалогах
Регистрация: 22.01.2010
Сообщений: 311
|
||
Просмотров: 5392
|
|
||||
Есть конечно.
$value - значение того элемента диалога, над которым производится действие. То есть с его помощью можно вытащить значение только одного элемента диалога. get_tile получает текущее значение любого элемента диалога, даже если с ним не совершается никаких действий. Ну а в приведенном примере оба варианта отработают одинаково. |
||||
![]() |
|
||||
Все равно get_tile должно вызываться по какому-то событию. Здесь это событие - действие с элементом "tip". В том-то и плюс, что get_tile можно к любому действию "прикрутить", и не обязательно с тем элементом, чье значение нужно получить.
Зы Цитата:
Последний раз редактировалось Do$, 24.11.2010 в 09:00. |
||||
![]() |
|
||||
Регистрация: 22.01.2010
Сообщений: 311
|
Как мне кажется, было бы логичнее в любом месте программы, где мне нужно получить номер выбранного зачения из списка "tip", использовать конструкцию (get_tile "tip"), но у меня почему-то всегда это значение оказывается равным nil при любом выбранном значении списка.
В чем может быть дело ? Do$, в обоих случаях переменная num-tip будет иметь целочисленный тип. Разве не так ? Последний раз редактировалось swkx, 24.11.2010 в 11:39. |
|||
![]() |
|
||||
В первом варианте num_tip будет строкой.
Цитата:
|
||||
![]() |
|
||||
Теперь понятно...
Все <>_tile должны вызываться между вызовами функций new_dialog и start_dialog. И что-то я сомневаюсь, что так будет правильно работать: Код:
|
||||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Тоже не совсем верно. После new_dialog на экране появляется диалог, но он ещё не активен для пользователя, поэтому в этот момент можно и нужно только присваивать элементам диалога нужные параметры, заполнять списки и т.д.. И смысла в чтении этих параметрах ещё нет. Вызов (start_dialog) делает диалоговое окно активным, но сам лисп останавливается до закрытия диалога. То есть после (start_dialog) Опять бесполезно использовать get_tile, так как окно в этот момент уже закрыто! (именно поэтому nil) Все чтения параметров нужно выполнять в функциях отклика диалога.
|
|||
![]() |
|
||||
|
||||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
Минус метода в #1 в том, что если элемент не трогать, то значение переменной останется nil как следствие обязательно выскочит ошибка или переменную нужно инициализировать изначально... |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Самый, на мой взгляд, удобный вариант работы с диалогом - это когда есть одна главная функция отклика для диалога и там делать всю его обработку, тогда не надо париться с action-tile и т.п.. Вот на данном примере накидал такой вариант:
Код:
Последний раз редактировалось Евгений А., 25.11.2010 в 00:32. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
ИМХО, не лучший стиль программирования: action-dialog - это функция по умолчанию для элементов, которым явно не присвоено действие, зачем в него вставлять разграничение? Есть ведь action_tile! А что если забыть кнопку "close"... диалог не закроется просто... вы потеряете часть работы!
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,406
|
По-моему, для accept и cancel не требуется специально назначать action_tile (ну, только если не требуется анализировать результат выполнения диалога
![]()
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Армспорт Регистрация: 18.07.2006
Ейск
Сообщений: 355
|
Э-э-э, налетели коршуны
![]() Цитата:
PS: Забыл самое приятное - отлов ошибок диалога в отладчике при таком алгоритме - не проблема, а вот с action_tile - извините, тока силой мысли. Последний раз редактировалось Евгений А., 24.11.2010 в 23:07. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Excel: Выбор значения из списка для ячейки (без ссылки на другие ячейки) | Малюк | Прочее. Программное обеспечение | 11 | 15.09.2012 12:17 |
Получения списка кривых на чертеже (VBA) | Тензор | Программирование | 3 | 12.12.2009 19:39 |
структурированный список | Holon | Программирование | 22 | 11.09.2007 14:09 |
чтение данных из файла | Александер | Программирование | 6 | 08.09.2005 10:24 |