| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Solidworks2014+VBA. Как сделать многоколоночный листбокс?

Solidworks2014+VBA. Как сделать многоколоночный листбокс?

Ответ
Поиск в этой теме
Непрочитано 29.12.2015, 14:03 #1
Solidworks2014+VBA. Как сделать многоколоночный листбокс?
voverrr
 
гастарбайтер понаехал
 
Маскво
Регистрация: 07.12.2009
Сообщений: 267

Здравствуйте.
На форме у меня расположен листбокс. В него загружаются имена файлов.
Фалов может быть разное количество: от двух-трёх до сорока-пятидесяти и более.
В опциях листбокса есть строчка Colunn Count и я установив её=3, рассчитывал, что имена файлов будут распределяться по трём колонкам, чтобы справа не образовывался скроллбар.
Но весь список всё равно грузится в одну колонку.
Как сделать, чтобы список распределялся по всем трём колонкам и уж потом, если, например, не умещается в три, уже тогда создавался бы скроллбар?
Просмотров: 5336
 
Непрочитано 29.12.2015, 14:21
1 | #2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Сильно подозреваю, что понадобится не ListBox, а нечто типа DataGrid. С полностью динамическим распределением колонок и строк.
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 29.12.2015, 15:46
1 | #3
stas_org


 
Регистрация: 05.04.2007
Самара
Сообщений: 1,199


With Me.ListBox1
.AddItem
.List(.ListCount - 1, 0) = "Иванов"
.List(.ListCount - 1, 1) = "Петров"
.List(.ListCount - 1, 2) = "Сидоров"
End With
stas_org вне форума  
 
Автор темы   Непрочитано 29.12.2015, 18:20
#4
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 267


Спасибо за советы. получается, в свойствах листбокса такого нет нигде.
В одном случае придётся перепахивать весь макрос, чтобы добавлять значения в datagrid, в другом случае тоже какие-то циклы что ли добавлять.
voverrr вне форума  
 
Непрочитано 29.12.2015, 18:51
1 | #5
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


не так и много - проверка по условиям: влезает ли количестве строк в один столбец без остатка или нет, в два столбца без остатка и оставшийся вариант. И разбивать список на 1, 2 или 3 колонки соответственно и соответствующий вывод. И этот код вставляете в то место макроса - где был первоначальный вывод в список прописан.
Сергей812 вне форума  
 
Непрочитано 30.12.2015, 09:51
1 | #6
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


как вариант, после проверок можно формировать массивчик одно, двух, трехмерный

в зависимости сколько столбцов получается
пример (для трех столбцов, 11 строк)
после проверки количества файлов
Код:
[Выделить все]
reDim arrFilName(10,2)
'заполняем массивчик 
ListBox1.ColumnCount = 3
ListBox1.ColumnWidths = "100;100;100" 'например ширина по 100 pt
ListBox1.List() = arrFilName
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 30.12.2015, 09:53
1 | #7
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 39,835


Offtop: Интересно, а при выборе элемента в таком многоколоночном ListBox будет выбираться целиком строка или только тот элемент, на котором пользователь клацнул?
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 30.12.2015, 10:18
1 | #8
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


строка, но куда клацнул определить можно без проблем
=======
Кулик Алексей aka kpblc, кстати да, лучше формировать по условию несколько листбоксов и динамически их показывать/ скрывать, растягивать/сжимать
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 30.12.2015, 10:33
1 | #9
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


Цитата:
Сообщение от doctorraz Посмотреть сообщение
лучше формировать по условию несколько листбоксов и динамически их показывать/ скрывать, растягивать/сжимать
какой то дикий интерфейс получиться)
Сергей812 вне форума  
 
Непрочитано 30.12.2015, 12:23
1 | #10
doctorraz

электрик
 
Регистрация: 19.02.2010
Волгоград
Сообщений: 2,295
Отправить сообщение для doctorraz с помощью Skype™


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
какой то дикий интерфейс получиться)
не то слово, а какие еще варианты?
__________________
Мастерская СПДС
doctorraz вне форума  
 
Непрочитано 30.12.2015, 12:34
1 | #11
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


я бы рекомендовал скачать бесплатную студию экспресс, и перейти на Interrop VB.NET. Это наименее болезненный путь переноса приложения с VBA на что-то "посовременнее". А WinForm и формы VBA - даже близко не стояло по функционалу. Но судя по тому, что ТС не смог найти в интернете пример заполнения многоколоночного ListBox VBA - это не для него.
Сергей812 вне форума  
 
Автор темы   Непрочитано 30.12.2015, 12:47
#12
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 267


Спасибо, джентльмены.
При данных условиях:
1. Мои зайчаточные знания программирования.
2. Необязательности реализации задачи, которую я изложил(хотелось бы, конечно, но уж если так непросто, то ладно).
3. Принцип "работает - не надо улучшать".
думаю, оставить этот момент как есть и просто смириться с тем, что список нужно будет двигать скролллом. Не так уж это и страшно.
Я думал, что в силу своего слабого знания программистических тонкостей просто не увидел какое-то свойство или галку в настройках листбокса. Ну, максимум, установить вместо него текстовый бокс и упражняться в нём, но через переписывание кода это меня пугает. И так еле слепил и настроил.
Спасибо вам всем, пожелаю вам удачных праздников и не напиваться как в тот раз)))
voverrr вне форума  
 
Непрочитано 30.12.2015, 12:53
#13
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


VBA уже давно не развивается.. с большим скрипом перешли с 6 версии на седьмую.. но как был примитивный редактор, урезанный функционал контролов - так оно все и осталось по сути)
Сергей812 вне форума  
 
Автор темы   Непрочитано 30.12.2015, 13:05
#14
voverrr

гастарбайтер понаехал
 
Регистрация: 07.12.2009
Маскво
Сообщений: 267


Для профессиональных программистов, да, возможно он и не представляет интереса, но для меня, как для инженера, оно весьма кажется удобным. По применению это похоже на фотошоповский экшен: ты можешь просто записать последовательность нужных тебе действий, чтобы автоматизировать типовые повторяющиеся команды. Тот же автокадовский лисп - его нужно отдельно изучать и пока сам дойдёшь до написания hello world - много нужно усилий. а проекты на работе в это время стоят. У меня по большому счёту задача - сделать чертежи на металлокаркас, например, распечатать сварщикам. А уж красота и удобство интерфейса, или какие-то глюки, из-за неотлаженных ошибок - дело десятое. Я не выкладываю эти макросы на всеобщий доступ, да и неинтересны они никому, кроме меня. поэтому с какими-то неудобствами или медленнодействием или черезжопной реализацией команд могу и смириться.
Солидовские же макросы можно писать буквально на лету, под сиюминутно возникающие одноразовые задачи.


Все мои источники знаний - это солидовский форум или справка API.

В русскоязычном интернете ничего похожего нет.
voverrr вне форума  
 
Непрочитано 30.12.2015, 13:19
#15
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


Поэтому и рекомендую Interrop в качестве альтернативы. Например, для автокада
Код:
[Выделить все]
'Получение ссылки на текущий чертеж
Private Function ThisDrawing() As AcadDocument
   Return Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.AcadDocument
End Function
и далее процесс написания особо не отличается от VBA. Все наработки по VBA почти без изменений копируются в VB.NET. Единственное - что отладка сложнее. Сначала надо в студии собрать библиотеку dll нажатием целой одной кнопки, а потом через NetLoad загрузить в акад. Но обратно уже не выгрузишь - только путем перезагрузки самой программы.

----- добавлено через ~6 мин. -----
p.s. я тоже не профессиональный программист - ни по образованию, ни по профилю работы. Просто после налетания лбом на ограничения и недостатки очередной среды разработки приходилось залезать в очередные дебри - постепенно за несколько лет накопился некоторый опыт)
Сергей812 вне форума  
 
Непрочитано 30.12.2015, 19:18
#16
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


Вот набросал похожий вариант поведения в Excel. И это только на управление через полосу прокрутки) Не забудьте разрешить макросы.
Вложения
Тип файла: zip Имитация_listview.zip (25.7 Кб, 25 просмотров)
Сергей812 вне форума  
 
Непрочитано 31.12.2015, 06:50
#17
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


А чем вам ListView не угодил?
gomer вне форума  
 
Непрочитано 31.12.2015, 09:52
#18
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


в VBA это нестандартный контрол, к сожалению. В плане универсальности и переносимости лучше не использовать.
Сергей812 вне форума  
 
Непрочитано 01.01.2016, 00:37
#19
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Сергей812 Посмотреть сообщение
в VBA это нестандартный контрол, к сожалению. В плане универсальности и переносимости лучше не использовать.
Он просто из 6й либы, а ListBox из пятой 6я либа ставится вместе с VBA, так что не вижу причин для беспокойства... хотя я давно уже этим не занимаюсь могу и ошибаться. В любом случае костыли с листбоксом хуже, чем отсутствие библиотеки
gomer вне форума  
 
Непрочитано 01.01.2016, 00:48
#20
Сергей812


 
Регистрация: 10.08.2013
Сообщений: 11,039


VBA Forms больше заточен для создания нестандартных диалогов, чем каких-то полноценных интерфейсов, имхо)
Сергей812 вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Solidworks2014+VBA. Как сделать многоколоночный листбокс?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Разработка ПОС, искусство проектирования Tyhig Технология и организация строительства 117 25.11.2021 17:38
как сделать твердотельную модель и сделать ее чертеж, потом перенести в солидворкс denya43 AutoCAD 5 24.12.2012 18:42
как сделать сопряжение в нужной точке? rtyu AutoCAD 4 08.08.2012 16:43
Из чего сделать несущие стены для индивидуального жилого дома Минька Конструкции зданий и сооружений 32 24.03.2009 11:49
Как сделать сделать заливку на растровой подложке? Особое мнение Разное 2 13.05.2008 10:30