Вверх ↑
Ответов: 2091
Рейтинг: 660
#1: 2013-12-07 17:49:19 ЛС | профиль | цитата
Выложу некоторые наработки по увеличению функционала MTStrTbl: MT таблица строк.
Все выложенное является набросками.
Что получилось:
1.Размер заголовка получилось изменить, а так же подогнать начало таблицы под заголовок. Сдвинуть заголовок под таблицу так и не получилось (см. строку 489). При сдвиге, остается не прорисованный участок слева. Размер заголовка сделал под высоту шрифта, возможно не самый лучший вариант.
tableheader.jpg
2.После реализации 1 пункта появился доступ к Handle заголовка. Для удобства был сделан элемент MST_SelfDrawManager: Менеджер самостоятельной прорисовки MTStrTbl. Элемент подключается к таблице как менеджер и выдает события для прорисовки таблицы и Handle заголовка и таблицы.
drawonheader.jpg
3.При подключении MST_SelfDrawManager появилась возможность рисовать в ячейках. К примеру возможно нарисовать кнопки, которые будут работать как обычные.
drawbuttons.jpg
firstbutton.jpg
4. Попытался ограничить изменения ширины столбцов (всех или указанных). Заблокированные для изменения ширины столбцы не реагируют на нажатие курсора мыши (как одинарное, так и двойное). Есть небольшой глюк: при перетаскивании курсора по заголовку с права от разделителя у заблокированных для изменения колонок (пикселей вроде 5) появляется курсор для изменения ширины. Его в теории (если правильно понял мануалы) можно убрать, но не стоит шкурка выделки.
changewidth.jpg
5.Работать с фильтром в заголовке. Событие на нажатие кнопок, событие на изменения текста фильтра и очистка фильтров. Конечно большой вопрос, нужен ли вообще этот фильтр кому.
filterbar.jpg
Какие проблемы возникли:
1.Перестало отрабатываться событие onMouseUp, костыль строка 1007,1008.
2.При добавлении второй таблицы у первой вообще не прорисовывается заголовок. Причина скорее всего в перехвате HeaderWndProc строка 472.
tableerror.jpg
Может вам nesco удастся из всего этого сделать что-нибудь полностью работоспособное.

В архиве измененный элемент MTStrTbl и MST_SelfDrawManager и четыре примера.

Изменения в MTStrTbl помечены как //test многое прокомментировано.
карма: 10

4
файлы: 8tableheader.jpg [55.4KB] [1521], changewidth.jpg [33.5KB] [1353], drawbuttons.jpg [44.1KB] [1443], drawonheader.jpg [36.2KB] [1470], filterbar.jpg [17.7KB] [1346], firstbutton.jpg [44.8KB] [1357], tableerror.jpg [8.1KB] [1435], tablenewtest.zip [30.9KB] [452]
Голосовали:filyaxxxcom, Konst, miver, Nickname