TCheckListBox колонки разной ширины

VCL, KOL, CLX и др. Свои компоненты
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

20 окт 2009, 16:11

Сделал наследника, добился что колонки автосайзятся по ширине. Осталась одна проблема: при клике мышой выделяется тот пункт если бы размеры колонок были одинаковые :(
Весь башка уже сломал... Не могу понять кто и когда выставляет odSelected in State, ибо отрисовывается по факту этого свойства
Изображение
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

20 окт 2009, 18:03

Албаните товарищ, ещё раз повнятней, можно с кодом.
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

21 окт 2009, 10:39

ща попробую :)
[ATTACH]1085[/ATTACH]
в сообщение не влезло...

Надо зарегичтрировать в систему, положить на форму, вбить в Items штуки 3 значения разной длины, включить AutoSizeColumns := true, выставить Columns := 3, запустить.
При выделении пункта мышой - выделяется не тот, на ком щёлкнули
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

21 окт 2009, 11:38

Сделай демку, для ленивых, чтоб сразу можно было тыкать :)
А точно не тот пункт выделяется или просто отрисовка шалит? (Значение забирается верно?)
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

21 окт 2009, 14:00

фишка в том, что не понятно кто и когда выставляет флаг odSelected свойства State
А проца DrawItem родителя в зависимости от его значения рисует выделение.
Ща дему сделаю
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
[ATTACH]1086[/ATTACH]
для БДС2006, там группа = проект + пакет с компонентом.
вот зараза, на тестовом примере оказалось что мышой в чек попадает, а при задании значения в дизайнере правильно отрисовывается только самы первый чек. Ноги растут из одного места, пшёл ещё покопаюсь
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

22 окт 2009, 09:58

Не смог у себя запустить, при попытке добавить итемсы (ты юнит забыл положить) полезли ошибки - дивисион бу зерро, еще была про дефолтовое значение что-то там (тыкнул в ячейку высоты), у тебя соседние выделяются или вообще рандомные? Я думаю что это проблема вычисления, itemID div GetListBoxInfo(Self.Handle); GetListBoxInfo напомоему DWORD возвращает и не факт что при целочисленном делении запятая куда-нить не переедет, попроверяй цифры во всех местах..
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

22 окт 2009, 11:31

[ATTACH]1089[/ATTACH]

блинство, пересохранял в другой каталог и часть файлов зобыло...
ошибка там из-за того что по-дефолту стоит автоширина, а список пустой не проверяю - надо перед добавлением выключить автоширину
&quot писал(а):у тебя соседние выделяются или вообще рандомные?
дык я и говорю, выделяется тот пункт как будто автосайз не стоит, т.е. в примере чтобы выделить п2 надо щёлкнуть на самой его правой части. Хотя клик по квадратику попадает в нужное место и правильно отрисовывается
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Аватара пользователя
Duncon
Сообщения: 1974
Зарегистрирован: 10 окт 2004, 14:11
Откуда: Питер
Контактная информация:

22 окт 2009, 15:14

Spin, dxCntner,dxEditor, dxExEdtr, dxEdLib - not found
Запустил потыкал, однозначно вычисления длинны элементов храмают, к примеру на 3 элемент в 1 половине нажать выделется 2 элемент на 2 половине то что нужно. Если вечером не обламает поищу где косячит..
[syntax=Delphi] [/syntax]
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

23 окт 2009, 15:47

всё что не найдено - убить (ступил) это просто едит для проверки отрисовки чеков при изменении значения на компоненте...
Там интересная фигня вылезает. Если без отладки - выделяется лажа и чеки не отрисовываются при смене значения, а в отладке вызывается дополнительная отрисовка и вроде нормально всё...
Изображение
Аватара пользователя
Игорь Акопян
Сообщения: 1419
Зарегистрирован: 13 окт 2004, 17:11
Откуда: СПБ
Контактная информация:

29 окт 2009, 11:12

[ATTACH]1095[/ATTACH]

хм, частично таки сделал, путём банального присвоения Selected!
обновил, пофиксил пару багов. В архиве только один файл самого компонента. Теперь всё нормально при клике выделяется. Есть один забавный эффект... Если кнопку мыши нажать но не отпустить, выделение опять убегает на другой пункт.
У вас нет необходимых прав для просмотра вложений в этом сообщении.
Изображение
Ответить