многоколонный ListBox

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
IZO-admin
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.02.2002 (Пн) 22:38
Откуда: Russia

многоколонный ListBox

Сообщение IZO-admin » 25.11.2004 (Чт) 22:39

В ListBox есть такой атрибут как число столбцов.
Спрашивается, можно ли такие списки с числом столбцов>1 использовать при заполнении программно методом Add?

xolod
Гуру
Гуру
 
Сообщения: 1162
Зарегистрирован: 15.01.2004 (Чт) 0:42
Откуда: Moscow

Сообщение xolod » 25.11.2004 (Чт) 23:53

Не понял :lol:, суть вопроса в чем, можно ли использовать метод Add когда св-во Columns > 1? А почему нет?

Constant ERROR_SUCCESS deprecated. I'm so happy.
Программирование и дизайн – http://www.macrointellect.ru

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.11.2004 (Пт) 10:07

[TRANSLATE ON]
Он хочет спросить, можно ли в ListBox заполнять колонки.
[TRANSLATE OFF]
Нет, нельзя. Когда число столбцов > 1, тогда просто начинает действовать другая схема заполнения списка (элементы добавляются не по вертикали, а по горизонтали).
Поищи по форуму с текстом "LB_SETTABSTOPS" и будет тебе щастье.
Lasciate ogni speranza, voi ch'entrate.

IZO-admin
Начинающий
Начинающий
 
Сообщения: 11
Зарегистрирован: 11.02.2002 (Пн) 22:38
Откуда: Russia

Сообщение IZO-admin » 29.11.2004 (Пн) 20:32

Поищи по форуму с текстом "LB_SETTABSTOPS" и будет тебе щастье.


Спасибо. Вроде как понял: сначала выставляются позиции табуляции, как в Ворде (на линейке или в параметрах), а затем добавляются элементы с табуляцией, которые выстраиваются по позициям.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.11.2004 (Вт) 10:51

В точку.
Дополнительно надо проконтролировать, чтобы длина текста "колонки" не превышала ширину "колонки", иначе все столбцы "поедут".
Lasciate ogni speranza, voi ch'entrate.

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

А как быть если чекбокс?

Сообщение Rojohn » 23.09.2005 (Пт) 12:54

А можно сделать в ListBox, чтобы стиль был чекбокс и много колончатая запись (поля таблицы как в DataGreed) или как это лучше реализовать, точнее в каком контроле?
З.ы. Не могу использовать DataGreed, т.к. надо чекить именно список многоколончатых записей (без редактирования).
Спасибо!

CodeName33
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 297
Зарегистрирован: 01.09.2004 (Ср) 13:25
Откуда: SPb

Сообщение CodeName33 » 23.09.2005 (Пт) 13:50

Rojohn, я в своё время делал, фиксированный шрифт и выравнивал столбцы пробелами.
Программисты не глючат - глючат компиляторы...

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 14:01

может проще заюзать ListView :?:

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Да, но...

Сообщение Rojohn » 23.09.2005 (Пт) 14:11

А как правильно сделать колонки в ListView, чтобы первая была просто чекбокс, счёт или проверка была только по строкам и первый столбец был Visible=False?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 14:15

1/ CheckBoxes=True
2/ Report Style

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Это-то ясно...

Сообщение Rojohn » 23.09.2005 (Пт) 14:22

Это-то ясно вроде... Просто ни разу не юзал ListView :) Как в нём вообще колонки заполняются? Rак сделать одну из них невидимой? Как обратиться к строке?

lord0n
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 845
Зарегистрирован: 30.06.2005 (Чт) 9:55
Откуда: Moskow

Сообщение lord0n » 23.09.2005 (Пт) 14:25

блин, вот ты заморачиваешься :shock:
я бы давно поставил какой нить грид, типа флекса, и не мучился :)
Теория - это когда что-то не работает и известно почему.
Практика - это когда что-то работает, но неизвестно почему.
Нам удалось совместить теорию с практикой, теперь ничего не работает и неизвестно почему.

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 14:26

Код: Выделить всё
ListView.ListItems.Item(i).Text
ListView.ListItems.Item(i).SubItems(i)

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

?

Сообщение Rojohn » 23.09.2005 (Пт) 14:36

Что такое SubItems? Как вставить текст в конкретную колонку? И насчёт Visible=False что?

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Сообщение Rojohn » 23.09.2005 (Пт) 14:40

блин, вот ты заморачиваешься
я бы давно поставил какой нить грид, типа флекса, и не мучился


А гриды вроде не позволяют сделать чекит активным, а остальное только для чтения. Или я ошибаюсь? :)
А сторонних не хочу пользовать...
Вот если только грамотный ресайзер сторонний... Только пока такого не нашел :( Одни в MDI не пашут, другие - SSTab не ресайзят...
Пока выкрутился, только очень замороченно. :?

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 14:42

вот сссылочка на разные мудренные примерчики для ListView:
http://btmtz.mvps.org/listview/

а простые(и не только) примерчики использования этого контрола можно найти на этом сайте :wink:

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

:)

Сообщение Rojohn » 23.09.2005 (Пт) 14:56

Примеры, конечно, хороши, но практически все на API :) А что-нить попроще?) Вот смотрю, цедю по строчке в вопросах ентого сайта, а полноценных ответов пока не нашел. Может где-нить в последних ответах найду :)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 15:11

на , смотри:
Вложения
ListView Sample.rar
(1.48 Кб) Скачиваний: 58

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

Спасибо!

Сообщение Rojohn » 23.09.2005 (Пт) 15:31

Спасибо за пример! Было бы достаточно и этого:
Код: Выделить всё
For j = 1 To .ColumnHeaders.Count
            Set lsi = lst.ListSubItems.Add(, lst.Key & "_subitem" & j, "SubItem " & j)
        Next


Плохо, что у .ColumnHeaders(1) нет свойства Visible... Куда можно записать поле с ID записи, чтобы его не было видно, а при считывании строки можно было понять какой у неё ID? (ID из BD Access)

Konst_One
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
Аватара пользователя
 
Сообщения: 3041
Зарегистрирован: 09.04.2004 (Пт) 13:47
Откуда: Химки

Сообщение Konst_One » 23.09.2005 (Пт) 15:34

для этого не нужно ничего скрывать, просто используй tag:

...
Set lst = .ListItems.Add(, "item" & i, "Item " & i)
lst.Tag = i
...

Rojohn
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 439
Зарегистрирован: 22.06.2005 (Ср) 11:00
Откуда: Moscow city

А как сделать это?

Сообщение Rojohn » 23.09.2005 (Пт) 22:25

Tag я бы приберёг на случай контекстных хелпов :) В него ведь больше одного значения не запишешь... Я просто сделал ширину столбца 0 и поместил код (из предыдущего вопроса), делающий эти столбцы неподвижными.
Спасибо! Хорошая штука ListView!
:)
И напоследок маленький вопросик: Видел реализацию древесной структуры на базе ListView. Чем вообще отличается дерево на ListView от дерева на TreeView? Что лучше и почему?


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 12

    TopList