Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2005.07.11;
Скачать: [xml.tar.bz2];

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.723 c
4-1116001195
NikNet
2005-05-13 20:19
2005.07.11
Как в PopupMenu сделать пункт жирной WinAPI


8-1110874921
MaDis
2005-03-15 11:22
2005.07.11
Векторная графика


10-1096025999
Леван
2004-09-24 15:39
2005.07.11
Работа с Word


1-1118401758
!Trinix
2005-06-10 15:09
2005.07.11
Время


1-1118491492
WST
2005-06-11 16:04
2005.07.11
Сортировка списка





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский