Добрый день!
Как через SendMessage выделить нужную строку в пользовательском ListView?
ListView.ViewMode = vmDetails
Если кто вспомнит - подскажите пожалуйста.
'in module
Private Type LV_ITEM
Mask As Long
iItem As Long
iSubItem As Long
State As Long
stateMask As Long
pszText As String
cchTextMax As Long
iImage As Long
lParam As Long
iIndent As Long
End Type
Private Const LVM_FIRST As Long = &H1000
Private Const LVM_GETTOPINDEX As Long = (LVM_FIRST + 39)
Private Const LVM_GETCOUNTPERPAGE As Long = (LVM_FIRST + 40)
Private Const LVM_SETITEMSTATE As Long = (LVM_FIRST + 43)
Private Const LVIS_FOCUSED As Long = &H1
Private Const LVIS_SELECTED As Long = &H2
Private Const LVIF_STATE As Long = &H8
'in procedure
LV
.Mask = LVIF_STATE
.State = True
.stateMask = LVIS_SELECTED Or LVIS_FOCUSED
End With
Call SendMessage(.Hwnd, LVM_SETITEMSTATE, iIndex, LV)
iGrok писал(а):Могу ошибаться, но по-моему это вопрос наличия фокуса на LV. Попробуй SetFocus на него.
Хакер писал(а):Люди, которые пишут, что видели какую-то ошибку, но не пишут, какую в точности — что у них на уме? Чего они хотят? Просто поболтать? Вызвать сочувствие?
Уж точно они хотят что угодно, но не рашить свою проблему, ибо в противном случае они бы не занимались такой глупостью.
Хакер писал(а):Ты вообще адекватен? Какой инструкции?
Хакер писал(а):Люди, которые пишут, что видели какую-то ошибку, но не пишут, какую в точности — что у них на уме? Чего они хотят? Просто поболтать? Вызвать сочувствие?
Хакер писал(а):Не хочешь содействовать? Не надо отнимать у других время, играя в бессмысленную игру.
kibernetics писал(а):А всего-то хотелось иметь интеллектуальный ListView.
kibernetics писал(а):Object doesn't support this property or method
Хакер писал(а):kibernetics писал(а):А всего-то хотелось иметь интеллектуальный ListView.
А текущий что? Не интеллектуальный? Или интеллектуальность появляется как только список начинает подкрашивать выделенный пункт синим всегда, а не только тогда, когда имеет фокус? Это критерий интеллектуальности.
Что-то не так с твоим видением мира, не иначе.
Хакер писал(а):kibernetics писал(а):Object doesn't support this property or method
И какой ListView ты используешь? Сдаётся мне, что контрол под именем myLvw — это не ListView, а что-то другое.
Хакер писал(а):И какой вообще смысл писать
Me.Controls("myLvw").SetFocus
вместо
myLvw.SetFocus
?
Хакер писал(а):И вообще, тебе нужно иметь способ держать LV всё время в фокусе, или тебе нужно, чтобы пункты горели синим даже без фокуса?
Хакер писал(а):И почему ты, наряду с запутанным способом вызова метода SetFocus, для изменения выделенной строчки пользуешься не штатным способом, а хочешь делать это через оконные сообщения? Ты участвуешь в конкурсе «как написать боле запутанный код и при этом заморочить людей на форуме странно сформулированными вопросами»?
kibernetics писал(а):необходимо выделить программно строку. Потому что задать цвет вообще не реально.
Крайне желательно, чтобы горели даже без фокуса.
bon818 писал(а):kibernetics писал(а):необходимо выделить программно строку. Потому что задать цвет вообще не реально.
Крайне желательно, чтобы горели даже без фокуса.
Использовать: Сообщение NM_CUSTOMDRAW для перерисовки всего что отображает LV.
В Вашем 'ListV' даже есть готовая ф-я для этого pvCustomDraw
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 58