Как в ListView (style Report) чего-нибудь добавить?
От: mihauzen Украина  
Дата: 16.10.02 15:17
Оценка:
Здравствуйте!

Как говориться — приехали. Уже 3-ий час мучаюсь, а бестолку. Не могу ничего добавить в созданный Grid на основе Listiew:

m_hWndClient = m_view.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT, WS_EX_CLIENTEDGE);


Пробовал добавить итем, картинку в качестве бекграунда, столбец — фанарь. Только фон могу менять. Использовал, казалось бы все, всё что есть в МСДН, но без результатно. Возможно, где-то ошибаюсь с заполнением структур типа LVITEM, LVCOLUMN, LVBKIMAGE. Не буду приводить свой код, чтобы не испеугать ВАС еще больше .

Кто может накидать пару примерчиков или кусков кода по осуществлению всего выше сказанного?
Киньте сюда, буду очень признателен...
...все это временно... (с) Айэм
Re: Как в ListView (style Report) чего-нибудь добавить?
От: nkaipov  
Дата: 17.10.02 03:50
Оценка:
Здравствуйте mihauzen, Вы писали:

M>Здравствуйте!


M>Как говориться — приехали. Уже 3-ий час мучаюсь, а бестолку. Не могу ничего добавить в созданный Grid на основе Listiew:


M>
M>m_hWndClient = m_view.Create(m_hWnd, rcDefault, NULL, WS_CHILD | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | LVS_REPORT | LVS_SHOWSELALWAYS | LVS_EX_GRIDLINES |LVS_EX_FULLROWSELECT, WS_EX_CLIENTEDGE);
M>


M>Пробовал добавить итем, картинку в качестве бекграунда, столбец — фанарь. Только фон могу менять. Использовал, казалось бы все, всё что есть в МСДН, но без результатно. Возможно, где-то ошибаюсь с заполнением структур типа LVITEM, LVCOLUMN, LVBKIMAGE. Не буду приводить свой код, чтобы не испеугать ВАС еще больше .


M>Кто может накидать пару примерчиков или кусков кода по осуществлению всего выше сказанного?

M>Киньте сюда, буду очень признателен...

Если использовать WTL, то примерно так:
    // создаём колонки
    LV_COLUMN lvc;
    lvc.mask = LVCF_FMT | LVCF_ORDER | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
    lvc.fmt = LVCFMT_LEFT;
    lvc.cx = 100;
    lvc.pszText = "TestColumn1";
    lvc.iOrder = 0;
    lvc.iSubItem = 0;
    ListView_Report.InsertColumn(0, &lvc);

    lvc.pszText = "TestColumn2";
    lvc.iOrder = 1;
    lvc.iSubItem = 1;
    ListView_Report.InsertColumn(1, &lvc);

    // заполняем хламом
    // в чистом Win32 используется LVITEM
    ListView_Report.InsertItem (0, "Колонка №1");
    ListView_Report.SetItemText(0, 1, "Колонка №2");
Re[2]: Как в ListView (style Report) чего-нибудь добавить?
От: mihauzen Украина  
Дата: 21.10.02 12:33
Оценка:
Здравствуйте nkaipov!

Наконец-то добралася к компьютеру, попробовал код — работает. Спасибо
А вот с эксериментами получается не очень. Во первых, не получается сделать видимость сетки, хоть и создаю вью со стилем LVS_EX_GRIDLINES. Во вторых, шапка грида работает, как кнопка, а когда указываю отключить это св-во LVS_NOSORTHEADER — оно отключается, но исчезает видимость кнопки, она становится вдавленной. И в третих, как я понял, сначала мы создаем итем ListView_InsertItem, а потом заполняем субитемы(справа от него) ListView_SetItemText. Но, почему-то фокус перемещается только по итемам, а на субитемы не переходит, т.е субитемы создаются, но выделить какой-нибудь один я не могу. Как с этим всем бороться?
...все это временно... (с) Айэм
Re[3]: Как в ListView (style Report) чего-нибудь добавить?
От: retalik www.airbandits.com/
Дата: 21.10.02 12:39
Оценка:
Здравствуйте mihauzen, Вы писали:

M>Здравствуйте nkaipov!


M>Наконец-то добралася к компьютеру, попробовал код — работает. Спасибо

M>А вот с эксериментами получается не очень. Во первых, не получается сделать видимость сетки, хоть и создаю вью со стилем LVS_EX_GRIDLINES.
Нужно не создавать list view с этим стилем, а устанавливать его (см. ListView_SetExtendedListViewStyle)

M>Во вторых, шапка грида работает, как кнопка, а когда указываю отключить это св-во LVS_NOSORTHEADER — оно отключается, но исчезает видимость кнопки, она становится вдавленной.

А тебе как хочется-то, чтобы была выпуклой и не нажималась, что ли?

M>И в третих, как я понял, сначала мы создаем итем ListView_InsertItem, а потом заполняем субитемы(справа от него) ListView_SetItemText. Но, почему-то фокус перемещается только по итемам, а на субитемы не переходит, т.е субитемы создаются, но выделить какой-нибудь один я не могу. Как с этим всем бороться?

Никак. То есть или писать собственный контрол или реализовывать собственную отрисовку сабитемов.
Успехов,
Виталий.
Re[3]: Как в ListView (style Report) чего-нибудь добавить?
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 21.10.02 12:40
Оценка:
Здравствуйте mihauzen, Вы писали:

M>Здравствуйте nkaipov!


M>Наконец-то добралася к компьютеру, попробовал код — работает. Спасибо

M>А вот с эксериментами получается не очень. Во первых, не получается сделать видимость сетки, хоть и создаю вью со стилем LVS_EX_GRIDLINES. Во вторых, шапка грида работает, как кнопка, а когда указываю отключить это св-во LVS_NOSORTHEADER — оно отключается, но исчезает видимость кнопки, она становится вдавленной. И в третих, как я понял, сначала мы создаем итем ListView_InsertItem, а потом заполняем субитемы(справа от него) ListView_SetItemText. Но, почему-то фокус перемещается только по итемам, а на субитемы не переходит, т.е субитемы создаются, но выделить какой-нибудь один я не могу. Как с этим всем бороться?

1. Для того, чтобы выделять всю строку, надо поставить стиль LVS_EX_FULLROWSELECT.

2. отключить это св-во LVS_NOSORTHEADER — оно отключается, но исчезает видимость кнопки, она становится вдавленной — дык так вроде и должно быть...

3. Код по установке стиля LVS_EX_GRIDLINES — в студию...

4. И еще — версия Comctl32.dll должна быть не ниже 4.70.
Re[3]: Как в ListView (style Report) чего-нибудь добавить?
От: Flamer Кипр http://users.livejournal.com/_flamer_/
Дата: 21.10.02 12:41
Оценка:
Здравствуйте mihauzen, Вы писали:

[покоцано]

Да, вдогонку — про расширенные стили есть здесь.
Re[4]: Как в ListView (style Report) чего-нибудь добавить?
От: mihauzen Украина  
Дата: 21.10.02 13:19
Оценка:
Здравствуйте retalik, Вы писали:

R>Нужно не создавать list view с этим стилем, а устанавливать его (см. ListView_SetExtendedListViewStyle)

Да, разлинейка получается.

R>А тебе как хочется-то, чтобы была выпуклой и не нажималась, что ли?

Именно . Это реально?

R>Никак. То есть или писать собственный контрол или реализовывать собственную отрисовку сабитемов.

Вообще всё это очень печально — неужели грид на подобие Делфовского StringGrid'a прийдется писать самому или использовать чей-то, уже написанный?
Получается, ListView создает только "что-то вроде", но не грид . Даже линейки не такие, какие б хотелось, например, не позволяют изменять высоту ячейки. А на счет суб_итемов — только такой режим (итем и спарва от него суб_итемы) поддерживает ListView? Может быть, как-нибудь можно вместо суб_итемов напихать таких же итемов: редактируемых, выделяющихся по клику и т.д и т.п.?
...все это временно... (с) Айэм
Re[4]: Как в ListView (style Report) чего-нибудь добавить?
От: mihauzen Украина  
Дата: 21.10.02 13:23
Оценка:
Здравствуйте Flamer, Вы писали:

F>4. И еще — версия Comctl32.dll должна быть не ниже 4.70.


Как узнать свою версию Comctl32.dll и где можно скачать более свежую?
...все это временно... (с) Айэм
Re[4]: Как в ListView (style Report) чего-нибудь добавить?
От: mihauzen Украина  
Дата: 21.10.02 13:52
Оценка:
Здравствуйте retalik, Вы писали:

это опять я. Забыл еще одно свойство грида. Позволяет ли ListView делать фиксированными(т.е на подобии шапки) начала строк?
...все это временно... (с) Айэм
Re[5]: Как в ListView (style Report) чего-нибудь добавить?
От: retalik www.airbandits.com/
Дата: 22.10.02 03:35
Оценка:
Здравствуйте mihauzen, Вы писали:
M>Получается, ListView создает только "что-то вроде", но не грид . Даже линейки не такие, какие б хотелось, например, не позволяют изменять высоту ячейки. А на счет суб_итемов — только такой режим (итем и спарва от него суб_итемы) поддерживает ListView? Может быть, как-нибудь можно вместо суб_итемов напихать таких же итемов: редактируемых, выделяющихся по клику и т.д и т.п.?

Можно, но сложно
Посмотри, как сделано (как раз на основе list view) на viksoe:
http://home.worldonline.dk/viksoe/propertygrid.htm

А проще всего добавить в проект поддержку ActiveX и тогда у тебя столько сеток можно быдет попробовать...
Успехов,
Виталий.
Re[5]: Как в ListView (style Report) чего-нибудь добавить?
От: FireBrizz  
Дата: 04.11.02 14:41
Оценка:
Здравствуйте mihauzen, Вы писали:


M>Как узнать свою версию Comctl32.dll


Свойства файла->Версия

M> и где можно скачать более свежую?


обновляется вместе с IE

Подробнее см PSDK->User Interface services->windows shell->shell programmer's guide->Shell and Common Controls Versions
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.