Текущий архив: 2005.07.11;
Скачать: CL | DM;
ВнизCheckBox в ListView в виртуальном режиме, OwnerData:=true; Найти похожие ветки
← →
MegaVolt © (2005-06-21 13:16) [0]При переводе ListView в виртуальный режим OwnerData=true не отображаются CheckBox-ы Место под них выделяется а сами не отрисовываются. В обычном режиме всё работает нормально. Вроде бы OwnerData на отрисовку не должен влиять а получается что влияет Как можно сделать CheckBox видимыми?
← →
MegaVolt © (2005-06-21 15:33) [1]Забыл указать режим: vsReport
← →
MegaVolt © (2005-06-21 19:20) [2]Вот по этой ссылке есть баги ListView.
Может кто имеет возможность добавить этот баг?
http://qc.borland.com/wc/qcmain.aspx?da=422
← →
MegaVolt © (2005-06-22 10:21) [3]Похоже на Микрософтовскую фичу. Угробил кучу времени и наконец нашел полурешение Я думаю с этого положения уже вы мне поможете точно
Итак:
MSDN по поводу LVS_EX_CHECKBOXES пишет.
Enables items in a list view control to be displayed as check boxes. This style uses item state images to produce the check box effect.
Version 4.70. Enables check boxes for items in a list-view control. When set to this style, the control creates and sets a state image list with two images using DrawFrameControl. State image 1 is the unchecked box, and state image 2 is the checked box. Setting the state image to zero removes the check box altogether.
Version 6.00 Check boxes are visible and functional with all list-view modes except the tile view mode introduced in ComCtl32.dll version 6. Clicking a checkbox in tile view mode only selects the item; the state does not change.
Note Comctl32.dll version 6 is not redistributable but it is included in Microsoft Windows XP or later. To use Comctl32.dll version 6, specify it in a manifest. For more information on manifests, see Using Windows XP Visual Styles.
You can obtain the state of the check box for a given item with ListView_GetCheckState. To set the check state, use ListView_SetCheckState. If this style is set, the list-view control automatically toggles the check state when the user clicks the check box or presses the space bar.
На основе этой инфы начинаю копать: Ставлю на форму ImageList прописываю его в свойство ListView.StateImages bи сам прописываю две картинки в него. Они великолепно отрисовываются и переключаются когда меняешь StateIndex. А дальше началось самое интересное оказалось что если я у ListView установлю свойство ReadOnly в true то мои картинки при запуске заменяются изображениями CheckBox-a!!!! Дальнейшие эксперименты привели к тому что на форму можно бросать пустой ImageList а свойство ReadOnly переключать уже в Run-Time тогда эти картинки создаются виртуально и в ImageList не появляются после выхода из программы. Пробовал создавать и ImageList в RunTime почему то непрошло Картинки создаватся не хотят.
И вот теперь я подошел к следующей проблеме из изменение. В обычном StringGride просто в OnMouseUp пропысывал изменить переменную ответственную за CheckBokc и всё класненько работало. Но тут вылез очень любопытный глюк: В OnMouseUp прога вваливается и по MouseDown и по MouseUp Я в шоке Причём если нажимать на тексте то всё работает нормально а вот если по CheckBox-Картинке то срабатывает дважды.
Господа специалисты помогите что нибудь поделать с этим глюком. Создаётся ощущение что CheckBox сам посылает сообщение на любое изменение мыши и ListBox тоже посылает. А может я не прав. Короче как убрать событие по MouseDown?
Страницы: 1 вся ветка
Текущий архив: 2005.07.11;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.045 c