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

Ваш аккаунт

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

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

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

ListView Control помогите

8.0K
17 ноября 2004 года
kruppel
15 / / 17.11.2004
я хотел зделать таблицу через ListView ее вообще можно через него зделать или нет?
я выставляю стиль report внешне это таблица а ведет себя как список.помогите пожалуйста!
1.8K
17 ноября 2004 года
_const_
229 / / 26.11.2003
Цитата:
Originally posted by kruppel
я хотел зделать таблицу через ListView ее вообще можно через него зделать или нет?
я выставляю стиль report внешне это таблица а ведет себя как список.помогите пожалуйста!



А что значит "ведет себя как список"?

8.0K
17 ноября 2004 года
kruppel
15 / / 17.11.2004
мне надо чтобы можно было редактировать текст во всех столбцах.а у мя редактируется только в первом.тоесть выбираются строки только из первого столбца.
292
19 ноября 2004 года
Matush
726 / / 14.01.2004
ListView автоматически позволяет редактировать только первый столбец.
Чтобы редактировались и другиестолбцы я лично пишу сабкласинг ListView. И внем проверяю ДаблКлик, и вставляю в нужную ячейку Edit, потом по завершению редактирования, забираю Edit а отредактированый текст вставляю в нужную ячейку. То есть визуально редактирование выглядит как в Екселе.
8.0K
19 ноября 2004 года
kruppel
15 / / 17.11.2004
приведи пожалуйста кусок кода как это делать.
и у меня еще такая проблемма при попытке отослать сообщение LVM_GETSELECTEDCOUNT компилятор ругается и на макрос тоже ругается что это неизвестая переменная как с эти бороться?
292
20 ноября 2004 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by kruppel
приведи пожалуйста кусок кода как это делать.
и у меня еще такая проблемма при попытке отослать сообщение LVM_GETSELECTEDCOUNT компилятор ругается и на макрос тоже ругается что это неизвестая переменная как с эти бороться?



На счет LVM_GETSELECTEDCOUNT, то это возможно если у тебя не подключен #include <Commctrl.h>
Исходник закину чуть позже (надо его выдрать из проги)

8.0K
20 ноября 2004 года
kruppel
15 / / 17.11.2004
в том то и дело что я подключаю commctl а он его всеравно не видит
292
20 ноября 2004 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by kruppel
в том то и дело что я подключаю commctl а он его всеравно не видит



:)))))))))
ХМ, (кстати не commctl, а commctrl), тогда ищеш этот файл через коммандер (может у Тебя его просто нет). Копируеш в папку с прочектом и пишеш #include "Commctrl.h". Именно с такими кавычками. Если такой файл существует, то все должно пахать

8.0K
20 ноября 2004 года
kruppel
15 / / 17.11.2004
файл такой существует...как ты сказал всеравно undiclare identifer
8.0K
22 ноября 2004 года
kruppel
15 / / 17.11.2004
как там на счет исходников?
292
22 ноября 2004 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by kruppel
как там на счет исходников?


Вот исходники, только их никому ! :)
Если что неясно, то на мыло пиши.
Класс походу просто использовать. Create, InsertColumn, InsertItem, короче там по названиям все понятно, еще и ремарки есть (на украинском, конечно).

8.0K
01 декабря 2004 года
kruppel
15 / / 17.11.2004
Большое спасибо за исходники!ток я разобраться немогу=)немог бы ты коментариев побоше сделать .особенно в BeginEdit().заранее спасибо!
292
01 декабря 2004 года
Matush
726 / / 14.01.2004
Цитата:
Originally posted by kruppel
Большое спасибо за исходники!ток я разобраться немогу=)немог бы ты коментариев побоше сделать .особенно в BeginEdit().заранее спасибо!



Ну, идея следующая:
Во-первых можно устанавливать какие столбцы редактируются, а какие нет.

Теперь на счет BeginEdit:
Тут дописаны все необходимые для понимания комментарии

void CMList::BeginEdit(int xPos, int yPos, bool How)
{
RECT rc = {0, 0, 0, 0};

if(IsEdit)
EndEdit(false); // это если на данный момент есть уже редактированная ячейка


LVHITTESTINFO phti;
phti.pt.x = xPos;
phti.pt.y = yPos;
//////////////////////
// Тут определяются координаты ячейки, или по прямым значениям, или по координатам на экране
if(!How)
{
phti.flags = LVHT_ONITEMLABEL;
SendMessage(hList, LVM_SUBITEMHITTEST, 0, (LPARAM)&phti);
}
else
{
phti.iItem = yPos;
phti.iSubItem = xPos;
}
if(!IsColumnEdit[phti.iSubItem]) // Перевірка чи можна цей стовбчик правити
return;

// Тут устанавливаются приватные переменные, в которые записывается, какая яейка редактируется
eItem = phti.iItem;
eColumn = phti.iSubItem;

// перемещает если ЛистВью так, чтобы ячейка была видна
SendMessage(hList, LVM_ENSUREVISIBLE, eItem, false);

// Тут узнаются координаты прямоуголной области ячейки
rc.left = LVIR_LABEL;
SendMessage(hList, LVM_GETITEMRECT, phti.iItem, (LPARAM)&rc);

for(int x=0; x<phti.iSubItem; x++)
rc.left += SendMessage(hList, LVM_GETCOLUMNWIDTH, x, 0);
rc.right = rc.left + SendMessage(hList, LVM_GETCOLUMNWIDTH, phti.iSubItem, 0);
// Тут в найденную прямоугольную область вставляется ЕдитБокс
SetWindowPos(hEdit, HWND_TOP, rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top, SWP_SHOWWINDOW);

LVITEM lvi;
char Buf[256];

lvi.iSubItem = phti.iSubItem;
lvi.pszText = Buf;
lvi.cchTextMax = 256;

// Тут берется тот текст, что был в ЛистВью и вставляется в едитБокс
SendMessage(hList, LVM_GETITEMTEXT, phti.iItem, (LPARAM)&lvi);

SendMessage(hEdit, WM_SETTEXT, 0, (LPARAM)Buf);
SendMessage(hEdit, EM_SETSEL, 0, lstrlen(Buf));
SendMessage(hList, LVM_SETHOTITEM, eItem, 0);
// Устанавливается фокус на ЕдитБокс
SetFocus(hEdit);
IsEdit = true;
}


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

8.0K
01 декабря 2004 года
kruppel
15 / / 17.11.2004
Цитата:
Originally posted by Matush


LVHITTESTINFO phti;
phti.pt.x = xPos;
phti.pt.y = yPos;
//////////////////////
// Тут определяются координаты ячейки, или по прямым значениям, или по координатам на экране
if(!How)
{
phti.flags = LVHT_ONITEMLABEL;
SendMessage(hList, LVM_SUBITEMHITTEST, 0, (LPARAM)&phti);
}
else
{
phti.iItem = yPos;
phti.iSubItem = xPos;
}


после этого всего в phti.iItem и phti.iSubItem всегда лежат -1 и -1. Чего с этим делать?..А когда новую версию выложиш?

8.0K
11 декабря 2004 года
kruppel
15 / / 17.11.2004
Ты где?
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог