Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MultiColumn List Box

279
03 сентября 2007 года
bave
456 / / 07.03.2004
В msnd в примерах, всё время натыкаюсь на обычные list box-ы
(не multicolumn). И среди сообщений не могу найти, те которыми
можно:
1. Устанавливать число колонок в стороках list box-ов
2. Устанавливать текст в каждой колнке, каждой стороки.

Есть у меня подозрение, что с кждой колонкой можно работать,
как с отдельным list box-ом...
10
03 сентября 2007 года
Freeman
3.2K / / 06.03.2004
То, о чём ты думаешь, называется ListView.
279
03 сентября 2007 года
bave
456 / / 07.03.2004
:)
Да, это я не внимательный...
(увидел слово MULTICOLUMN и решлил - Вот оно то, что надо!)
-----------------------------------------
Сейчас уже нащёл это ListView в MSDN-е - сижу колонки клепаю...
279
04 сентября 2007 года
bave
456 / / 07.03.2004
Почему-то ListView_InsertItem не пашет:
Пытаюсь добавить в первую колонку добавить строку - и в итоге ничего...
Делаю так:

 
Код:
LVITEM  lvi = { 0 };

lvi.mask = LVIF_TEXT;
lvi.iItem = 0;                            //не догонца понял
lvi.iSubItem = 1;                       //что это за поля в структуре LVITEM
lvi.pszText = newclient->getName();
ListView_InsertItem(g_hClientsList, &lvi);


Вроде как lvi.iItem = 0 - это добвление в первую строку, lvi.iSubItem = 1 - в первую колонку...
292
04 сентября 2007 года
Matush
726 / / 14.01.2004
Цитата: bave

Вроде как lvi.iItem = 0 - это добвление в первую строку, lvi.iSubItem = 1 - в первую колонку...



lvi.iSubItem = 1 - это вторая колонка (первая - 0).
Если у тебя в ListView 2 колонки то приведенный тобою код должен работать

279
04 сентября 2007 года
bave
456 / / 07.03.2004
В первыую колонку текст добовляется - lvi.iSubItem = 0,
а во вторую нет... (при lvi.iSubItem = 1)
-------------------------------------------------------------
(колонок всего пять - добовляется только в первую... -т.е. в 0)
279
04 сентября 2007 года
bave
456 / / 07.03.2004
Может колонки как то не так создал?
Создавал вот так:
Код:
g_hClientList = GetDlgItem(hdlg, IDC_LIST2); //get list-view control handle

LVCOLUMN lvc1 = { 0 };  //column struct - 1

lvc1.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc1.cx         = 40;
lvc1.pszText    = _strdup("№");
lvc1.cchTextMax = sizeof("№");
lvc1.iSubItem   = 0;

LVCOLUMN    lvc2 = { 0 };  
           
lvc2.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc2.cx     = 140;
lvc2.pszText    = _strdup("Client-IP");
lvc2.cchTextMax = sizeof("Client-IP");
lvc2.iSubItem   = 1;

LVCOLUMN    lvc3 = { 0 };                  
           
lvc3.mask       = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc3.cx         = 150;
lvc3.pszText    = _strdup("status");
lvc3.cchTextMax = sizeof("status");
lvc3.iSubItem   = 2;

LVCOLUMN    lvc4 = { 0 };              
           
lvc4.mask= LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc4.cx = 150;
lvc4.pszText    = _strdup("start time");
lvc4.cchTextMax = sizeof("start time");
lvc4.iSubItem   = 3;

LVCOLUMN    lvc5 = { 0 };                              
lvc5.mask = LVCF_WIDTH|LVCF_TEXT|LVCF_SUBITEM;
lvc5.cx         = 150;
lvc5.pszText    = _strdup("time left");
lvc5.cchTextMax = sizeof("time left");
lvc5.iSubItem   = 4;

iNumber = ListView_InsertColumn(g_hClientList, 0, &lvc1);
iClientIP = ListView_InsertColumn(g_hClientList, 1, &lvc2);
iStatus = ListView_InsertColumn(g_hClientList, 2, &lvc3);
iStart = ListView_InsertColumn(g_hClientList, 3, &lvc4);
iLeft = ListView_InsertColumn(g_hClientList, 4, &lvc5);
292
04 сентября 2007 года
Matush
726 / / 14.01.2004
Цитата: bave
В первыую колонку текст добовляется - lvi.iSubItem = 0,
а во вторую нет... (при lvi.iSubItem = 1)
-------------------------------------------------------------
(колонок всего пять - добовляется только в первую... -т.е. в 0)



На сколько помню. То ListView_InsertItem ты только добавляеш строку (с нулевым елементом), а уже остальные сабайтимы устанавливаешь с помощью ListView_SetItemText(...). Так точно работает

334
04 сентября 2007 года
HexEdit
809 / / 27.07.2006
Цитата: Freeman
То, о чём ты думаешь, называется ListView.


Можно и ListBox тоже сделать многостолбчатым, но придется вручную над этим работать.

279
05 сентября 2007 года
bave
456 / / 07.03.2004
C ListView_SetItemText(...) действительно заработало:
 
Код:
lvi.mask = LVIF_TEXT;
lvi.iItem = 1;
lvi.iSubItem = 0;
lvi.pszText = tmpbuff;

int item = ListView_InsertItem(g_hClientList, &lvi);     
newclient->setLviIndex(item);
ListView_SetItemText(g_hClientList, item, 1, newclient->getName());
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог