|
||
| Правила | Регистрация | Пользователи | Сообщения за день | | Поиск | | Справка по форуму | Файлообменник | |
|
![]() |
Поиск в этой теме |
![]() |
#1 | |
Ограничения в List-box при множественном выборе
КИП, АСУ ТП, слаботочка
Москва-Тюмень
Регистрация: 02.09.2010
Сообщений: 422
|
||
Просмотров: 12422
|
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Oliver_88,
ной да, странно, почему работает с 500 строчками? Может потому, что ты используешь get_tile, а я присваиваю значение в action_tile списка? В любом случае, поставь вместо 500 - 600. И акад вылетит. Какая-то ошибка происходит. Иногда акад пишет ошибку нарушения доступа. Странно, в общем. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
И вообще (даже другими средствами), не выводить в линейный список для выбора пользователем большое количество строк. |
|||
![]() |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
ShaggyDoc,
совет хороший! Я тоже думаю создать возможность выбора большого количества строк - не в dcl, а при помощи подкачки текстовых файлов. Но это редко когда понадобится в моей программе, так что особого внимания этим функциям не буду уделять. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Надо только один раз сделать несколько универсальных, правильно работающих, надежных диалогов и закрыть эту тему для себя навсегда. Это быстрее, чем ты разбирался на форуме с первым встреченным глюком. Возможно обнаружишь, что кроме этих нескольких простых диалогов, вызываемых как функции, тебе вообще больше ничего не понадобится. Примеры простых диалогов для работы со списками на картинках. Все вызываются из LISP в виде функций. Например, список с "галочками" (ru-dlg-show-check-list dlg_caption ; Заголовок окна lst_names ; Список строк lst_values ; Список значений (помечен или нет) lst_enabled ; Список доступности для изменения help_file topic_id ; Пункт справки ) Последний раз редактировалось ShaggyDoc, 03.01.2012 в 16:19. Причина: Движок форума стал глючить с тегами? |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Сделать доступной кнопку "Удалить" (или еще какую, которая результат принимает), если выбран хоть один элемент
![]() Ты лучше думай, как пользователю обеспечить удобный выбор, да еще такого количества. В обычном ListBox множественный выбор осуществляется стандартными средствами - мышкой с нажатыми Shift или Ctrl. При больших списках это чрезвычайно неудобно - достаточно один раз сбиться (на 1499 элементе), и начинай все сначала. Вот для этого и делают специальные диалоги. Например, в списке с "галочками" (CheckListBox) выбор не зависит от навигации и не сбивается. Можно и мышкой щелкать по галочкам, а клавишами прокручивать. Можно и отметку пробелом делать. Можно и свою клавишу назначить. Другой вид списка, с двумя окнами (DualListBox), позволяет перебрасывать элементы из окна в окно. Допустим, надо выбрать 1500 элементов из 1600. В простом списке надо будет щелкнуть до 1500 раз. В DualListBox исходный список помещаем в левое окно. Пользователь может одним щелчком перебросить весь список в правое окно, а затем выбрать в нем и перебросить обратно только оставляемые 100 элементов. Тогда справа останется 1500 удаляемых элементов. Это будет в 15 раз быстрее. Да еще и элементы можно заодно по вертикали перетаскивать, т.е. изменять порядок следования. Можно и запомнить состояние списков и дать работать "с перекурами". Последний раз редактировалось ShaggyDoc, 03.01.2012 в 20:10. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
если б меня заставили выбрать 256 пунктов из 32768, я б афтору надел его диалоговое окно на голову, как юзер
![]() Любые сложные данные можно структурировать и далее работать с деревьями (Вспомните установщик акада в пользовательском режиме), в примитивном виде это можно и через dcl организовать, если недотрах Что касается картинок, то все, кроме последней можно организовать в dcl, последнюю тоже можно, если см. выше Как по мне, оптимальный вариант - перейти на vb.net Вариант ShaggyDoc мне лично не нравится тем, что нужно создавать установщик, да и не нужные по сути системе библиотеки регистрировать как то не очень хочется, ну и к тому же, при первом запуске, такая ком-форма появится не сразу... доли секунды, а негативное отношение уже сложено... впрочем все это не смертельно самый лучший вариант - сесть и подумать как обойтись без длинных списков, 90% это возможно |
|||
![]() |
|
|||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Цитата:
Нужно не говорить о том, на что можно перейти, а перейти и сделать Цитата:
|
||||
![]() |
|
||||
КИП, АСУ ТП, слаботочка Регистрация: 02.09.2010
Москва-Тюмень
Сообщений: 422
|
Цитата:
Благодарю за полезный и конструктивный комментарий ![]() |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Offtop: вышеперечисленное больше к Gomer'у относится. ИХМО это либо утопия, либо самообман - да любое действие можно и через ДОС ком-строку организовать (и в свое время было не мало "доказательств", что так удобней всего) - да можно написать десяток другой и потом все под них "подгонять", но значит-ли это "закрыть эту тему для себя на всегда" - как минимум у меня пока точно не получилось.
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
будь я профессиональным программистом, писал бы аэриксы, жаль не пришлось
Цитата:
![]() считал, первый запуск длится около секунды, остальные - как тока, так сразу... что там внутри происходит, не разбирался, делал самую простую форму с одной кнопкой Цитата:
в любом случае, если вы пытаетесь втиснуть в диалог данные со сложной структурой, то этот диалог должен растягиваться. этого нет и не будет в dcl. В общем-то вариантов море. у всех свои достоинства и недостатки. Oliver_88, почитайте про start_dialog в справке и не повторяйте автодесковских ошибок |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Вот почти все диалоги, которые я использую: ruXmlMenu - иллюстрированное XML-меню. Единый диалог, позволяющий заменить множество индивидуально конструируемых форм. Картинку в очередной раз показываю. Помимо универсальных приемов работы позволяет продвинутым пользователям расширять возможности любых программ дополнением собственными данными. Без участия программиста. Списки (показаны в #12) ruChkList ruDoubleList2 ruDualList ruSingleList Ввод двух чисел или строк (можно и одиночных, как опции). Имеют проверки допустимых диапазонов (для чисел), выбора из справочников, выбора спецсимволов (для строк), "взять" указанием в чертеже. ruGetDoubleNumber ruGetDoubleString (см. картинку) ruSplash - заставка с информацией о длительном процессе ruFileDlg - очень быстрый файловый диалог с рядом дополнительных возможностей. ruCoordEdit - визуальный редактор координат (как-то показывал картинку) ruXmlTable - редактор любых таблиц. Таблицу пользователь может и сам создать (с шапками и прочим оформлением), редактировать её как таблицу БД. И в виде таблицы AutoCAD нарисовать, не заботясь об оформлении. См. картинку. ruTxtView - просмотр текста из файла или чертежа ruLayerClass - классификатор слоев. Вот этот как раз сделан специально в виде EXE, причем не модального. Правильная комбинация таких диалогов позволяет быстро создавать практически любые программы. Конечно, для отдельных сложных случаев приходится делать и более сложные формы. Вот программа аэродинамического расчета (см. рисунок) тоже сделана в виде самостоятельной программы, но она же и в LISP встроена в виде диалога. Это позволяет написать результаты расчета на нарисованной схеме, а в Автокаде измерить длины участков. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Написал большой пост - а он не "записался" - ну и бог с ним.
p.s. Цитата:
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 04.01.2012 в 15:24. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А они и на старых прекрасно работают, потому что не гонятся за новейшими версиями программ "с рюшечками". Например, даже в AutoCAD-14 работают (кому 2D достаточно) и в AutoCAD-2008 (кто в 3D). Зачем отдавать деньги заморским дядям, если их можно оставить себе? Вот даже Word (не такая уж ресурсоемкая программа) в современных версиях вдруг стал жаловаться на нехватку памяти при связках с Excell. Так что, ради его новых "сбоку бантик" менять компьютеры? "Просто память-то" не добавишь. Так просто не стали переходить на новый Word, а пользуются старым, который эту же работу делает не выкобениваясь. Цитата:
Последний раз редактировалось ShaggyDoc, 04.01.2012 в 17:52. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
p.s. Да если честно автокад 14 конечно еще могут использовать - из коммерческих соображений, а что все компьютеры с того-же (97-2000) года без апгрейта работают - в это я никогда не поверю (ну если только все - это 2 компа). Гнаться за самым новым я конечно не призываю (ничего кроме проблем от этой стратегии не будет), но компьютеры каждые 5-6 лет и так, и так, хочешь не хочешь, а обновления требуют - просто физически из строя выходят - да и что это за фирма которая за 3 года 10 т.р. на апгрейт "раскошелиться" не может.
__________________
Когда в руках молоток все вокруг кажется гвоздями. Последний раз редактировалось Дима_, 04.01.2012 в 18:35. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
Цитата:
насчет байто-чего-то там... есть такой micro paint размером на порядок меньше, чем mspaint а по функционалу такой же, ну или почти Последний раз редактировалось gomer, 04.01.2012 в 19:07. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
![]() Цитата:
Здесь и посмотри: Код:
|
|||
![]() |
|
||||
Инженер LISP Регистрация: 11.05.2005
Минск
Сообщений: 6,996
|
Цитата:
![]()
__________________
Как использовать код на Лиспе читаем здесь |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Цитата:
![]()
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
Цитата:
Главное, с чего начинается - ".NET - это продукт, который обещает широко распахнуть мир Интернета". ".NET - готовая инфраструктура для решения общих проблем Интернет-приложений". Ну, и распахнули? На каких продуктах большая часть Интернет сделана? Да хотя бы этот форум? Или хотя бы сайты у самих поклонников .NET? А мы обсуждаем про приложения для AutoCAD на .NET. Можно и создание калькулятора на .NET обсудить. А "многоплатформенность"? А совместимость версий самой .NET? Хотя бы для AutoCAD. Конечно, в .NET есть и много достоинств. Но не зря все слышнее стоны программистов, связавшихся с этой платформой. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
И каковы рекомендации? В какую сторону смотреть-та (с)?
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
|
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Offtop: - Может ли змея сломать себе хребет?
- Может, если будет ползти точно по генеральной линии партии
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
строю, ломаю Регистрация: 03.04.2008
Украина
Сообщений: 5,515
|
больше всего бесят приложения на нет с диалогом "в три кнопки", которые просто не запускаются на "старых" компутерах... и, вот, есть, например, такой micro paint на ассемблере, который при весе на порядок меньше mspaint имеет такой же функционал
|
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
|
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Цитата:
Код:
Код:
Код:
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
|
||||
Moderator
LISP, C# (ACAD 200[9,12,13,14]) Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,411
|
Неправда. Процесс может остаться. Чтобы он гарантированно исчез, сначала надо выполнить метод Quit.
__________________
Моя библиотека lisp-функций --- Обращение ко мне - на "ты". Все, что сказано - личное мнение. |
|||
![]() |
|
||||
Thượng Tá Quân Đội Nhân Dân Việt Nam Регистрация: 14.03.2005
44d32'44"С, 33d26'51"В
Сообщений: 13,372
|
Цитата:
А вот мою DLL видно и после (vlax-invoke-method srv "Free") и после (vlax-release-object srv). Висит в памяти и ждет, пока Windows ее не выгрузит (если запросов не будет). Это примерно 10 минут продолжается. И это правильная политика по отношению ко всем объектам. А COM-объектов в памяти множество висит, и штатных Windows, и из AutoCAD. CheckList у меня изредка запускается, а вот XML-меню - постоянно. И ему не надо заново грузиться, хотя в коде вызова тоже есть vlax-release-object. Но они будут уничтожены, когда будет закрыт AutoCAD. Только наблюдать надо более тонким инструментом, например ProcessExplorer. |
|||
![]() |
|
||||
Продуман Регистрация: 22.02.2007
Питер
Сообщений: 2,839
|
Как COM работает я славу богу знаю - Вы просто пишите что vlax-release... это для лисп - а это не так, и никакие не 10 минут а пока не будет запущен виндовый (COM'овый если быть точнее Garbage Collection) - что зависит от количество оперативки и настроек ОС - только толку от этого "висящего" объекта все равно ни какого - даже если будет повторный запрос он не "восстанавливается" а создается новый, просто механизм очистки памяти такой - чтоб ресурсы на каждый не тратить - а "скопом" так сказать (по возможности когда ничем не занят)- если по Вашему судить то и файлы тоже не удаляються а "висят" на жестком диске (и их действительно видно "более тонким" инструментом) - но толку от них ОС нет никакого - просто для экономии вычислительных ресурсов (физически затирать-то их незачем). В Вашем примере Ваш com создается новый на каждом вызове функции (как я уже писал повторно будет работать быстрее - но только за счет кеша).
__________________
Когда в руках молоток все вокруг кажется гвоздями. |
|||
![]() |
![]() |
|
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как получить доступ к таблице Access | Cleper | Программирование | 22 | 02.02.2016 07:05 |
Express Tools | Perezz!! | AutoCAD | 483 | 13.02.2015 10:57 |
(GRREAD) и привязка | Ева | Программирование | 17 | 18.12.2009 09:10 |
Работоспособность программы написанной очень давно. | faust999 | Программирование | 1 | 05.06.2009 08:06 |
3D Konstruktor для проектировщиков КМ. | Дима_ | Готовые программы | 17 | 10.07.2008 10:03 |