TreeView и альтернатива

Разговоры на любые темы: вы можете обсудить здесь какой-либо сайт, найти единомышленников или просто пообщаться...
Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

TreeView и альтернатива

Сообщение Space » 12.01.2007 (Пт) 22:35

В программе имеется ListView. Надо сделать что-то вроде папок или групп. Так вот думаю, как лучше сделать, как в ICQ раскрывающиеся группы или TreeView (пока ограничусь одним уровнем вложенности, т.е. вложенных папок или групп не будет). Где больше возможностей, что легче программировать и кому вообще как больше нравится, подскажите, плиз. Какой вариант вообще считается более удобным?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 12.01.2007 (Пт) 23:19

TreeView, конечно, удобней.
Насчет возможностей... а что нужно?
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 13.01.2007 (Сб) 0:14

Насчёт возможностей я и хотел узнать у более опытных, кто программировал в обоих вариантах и, возможно, жалел, что сделал так, а не иначе. Ну, например, я думаю, что в ListView с несколькими колонками и отображением сетки в lvwReport нет возможности сделать для имени группы одну "ячейку" через весь ListView. Также смотрю на TreeView в Outlook и вижу разный цвет шрифта в имени папки (подсветка синим кол-ва новых сообщений), что хорошо (интересно, это сложно делается?). А в ListView можно сделать в одном SubItem строку с шрифтом разного цвета? Так что пока склоняюсь к выбору TreeView.

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 13.01.2007 (Сб) 1:39

Space писал(а):интересно, это сложно делается?


Не очень. Стиль LVS_OWNERDRAWFIXED и отрисовка ручками.

А в ListView можно сделать в одном SubItem строку с шрифтом разного цвета?


Можно. См. выше.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 14.01.2007 (Вс) 2:32

По -идее, TreeView оно и есть Дерево. Если надо показать иерархическую структуру, оно как раз для этого и предназначено.

Можно, конечно, сделать что-то подобное дереву и на Listview, используя Indentation.

Debugger
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1667
Зарегистрирован: 17.06.2006 (Сб) 15:11

Сообщение Debugger » 14.01.2007 (Вс) 15:13

Можно, если совсем извратиться, использовать ListBox и Space(Index), где Index - уровень элемента:
Код: Выделить всё

Private Sub lst_MouseDown(Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim c As Integer
lst.Clear
For c = 0 To 99
    lst.AddItem Space(Rnd() * 10) & c
Next
End Sub

Заполняет листбокс значениями со случайным уровнем.

Space
Combo-маньяк
Combo-маньяк
 
Сообщения: 818
Зарегистрирован: 11.01.2007 (Чт) 1:19
Откуда: Украина

Сообщение Space » 19.01.2007 (Пт) 12:17

Не очень. Стиль LVS_OWNERDRAWFIXED и отрисовка ручками.


Подскажите, плиз, статью про отрисовку ручками, а то я в этом деле ничего не знаю.


Вернуться в Народный треп

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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 50

    TopList