Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Visual C++/MFC/WTL > CListCtrl.Редактируем внутри. |
Автор: Coocky 17.11.2004, 16:26 | ||||
Надоело работать с БД с помощью RecordView?Исправим ![]() Создаем 2 класса CMyedit:public CEdit и CMyList:public CListCtrl; ListCtrl со стилем LVS_REPORT+ExtendedStyle FULLROWSELECT и GRID(не помню по аглицки,но стиль репорт,выделение все строки и сетка).см. МСДН SetExtendedStyle() В CMyedit создаем сообщение WM_POSCHANGING
Добавляем класс CMyedit в CMyList.Создаем обьект m_Edit.Вызываем m_Edit.Create(.......CRect(0,0,0,0)...); В CMyList создаем обработчик сообщения на двойное нажатие кнопки мыши в нем пишем
Поясню:MyEdit::OnWindowPosChanging(WINDOWPOS FAR* lpwndpos) избавляет от глюков и дает халявный ресайзинг при изменении размеров. FULLROWSELECT только этот стиль позволит получит номер стобца.Иначе он будет равен -1. Убирать или показывать окно CMyEdit можно с помощью m_Edit.ShowWindow(FALSE/TRUE). А теперь представьте,вместо едита листбокс или комбо или CRichEdit со встроеным OLE контейнером ![]() ![]() |
Автор: CLIPSA 7.6.2008, 18:27 |
Здорово конечно! Но мне не нравится, что при FULLROWSELECT выделяется вся строка. Некрасиво. Как это устранить? И как высоту строк менять? (Хочу таблицу с огромными ячейками ![]() |
Автор: Earnest 10.6.2008, 07:42 |
Изменить высоту строки в листе можно, но только она будет одинаковая для всех строк. Делается просто: создаете картинку-пустышку шириной 1 и высотой какую хотите. Создать на ее основе CImageList и установить его в качесте в лист-контрол (SetImageList). Именно картинка и определяет высоту строки. Насчет FULLROWSELECT - просто отключи этот стиль. Coocky неправ, и без него все сработает (в смысле SubItemHitTest). |