Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.48 MB
Время: 0.073 c
1-1119440875
Peter_cc
2005-06-22 15:47
2005.07.11
Перенос слов


14-1118832825
Ega23
2005-06-15 14:53
2005.07.11
Программистские песни


3-1117528118
Nikola62
2005-05-31 12:28
2005.07.11
Установка активной колонки в dbgridEh


1-1119344221
Vikarij
2005-06-21 12:57
2005.07.11
Delphi, Printer


14-1118080233
jack128
2005-06-06 21:50
2005.07.11
Теперь нам не нужны Петиумы и Атлоны. Даешь МП "Эльбрус"