Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

ListView - поиск с выделением.

27K
29 июля 2008 года
Everhest
44 / / 20.07.2008
Привет всем, столкнулся с проблемой, в общем как произвести поиск строки в ListView и выбрать найденный элемент?
12K
29 июля 2008 года
lifs
163 / / 06.09.2007
для поиска можно либо использвать сообщение LVM_FINDITEM, либо перебрать все элементы самому
для выделения сообщение LVM_SETITEM
3.7K
29 июля 2008 года
0nni
326 / / 24.06.2008
LB_GETCOUNT - получаешь колличество элементов
перебираешь по порядку
LB_GETTEXTLEN - узнаешь размер строки
LB_GETTEXT - получаешь строку в буфер
LB_SETCURSEL - устанавливаешь выделение в нужной позиции

ой, это ListView, тогда простите ;)
27K
30 июля 2008 года
Everhest
44 / / 20.07.2008
А разве можно использовать сообщения типа LB как LVM?
3.7K
30 июля 2008 года
0nni
326 / / 24.06.2008
Цитата: Everhest
А разве можно использовать сообщения типа LB как LVM?


НЕТ :). Я по вопросу пробежался, подумал про LISTBOX разговор идет, еще раз прошу прощения:(

зы. Хотя возможно некоторые сообщения и совпадают

27K
30 июля 2008 года
Everhest
44 / / 20.07.2008
Просто я пишу функцию на асме для моей програмки, но охотно хочу побольше узнать о данной теме.

Код:
proc FindItem str, sts
     local item:DWORD

        mov     [lvf.flags], LVFI_STRING
        lea     eax, [str]
        mov     [lvf.psz],  eax
        invoke  SendMessage,[hlist],LVM_FINDITEM,[sts],lvf
        cmp     eax, -1
        je      error_find
        mov     [item], eax
        invoke  SendMessage,[hlist],LVM_GETITEMPOSITION,eax,pt
        mov     eax, [pt.x]
        mov     ecx, [pt.y]
        invoke  SendMessage,[hlist],LVM_SCROLL,eax,ecx
        ret
      error_find:
        invoke  MessageBeep,TRUE
        ret
endp


Где sts - это пункт с которого начнем поиск, str - строка которую ищем, lvf это структура LV_FINDINFO и pt структура POINT.
27K
30 июля 2008 года
Everhest
44 / / 20.07.2008
Цитата: lifs
для поиска можно либо использвать сообщение LVM_FINDITEM, либо перебрать все элементы самому
для выделения сообщение LVM_SETITEM



Так с выделением разобрался, (большое спасибо) но с поиском проблема... Я знаю про LVM_FINDITEM, но если вам не трудно обьясните подробней про LV_FINDINFO. К примеру, что такое и для чего: LVFI_PARAM, LVFI_PARTIAL, LVFI_WRAP, LVFI_NEARESTXY? Может у кого есть API пример (не важно какой язык) я буду признателен...

14
30 июля 2008 года
Phodopus
3.3K / / 19.06.2008
Цитата: Everhest
что такое и для чего: LVFI_PARAM, LVFI_PARTIAL, LVFI_WRAP, LVFI_NEARESTXY?



Это флаги поиска
LVFI_PARAM - поиск итема (узла) с значением LVITEM.lParam таким же как указанное в LVFINDINFO.lParam. Указание флага LVFI_PARAM отменяет действие всех остальных флагов.
LVFI_PARTIAL - проверка на то что текст итема лишь начинается со стоки переданной в LVFINDINFO.psz Флаг подразумевает использование и LVFI_STRING.
LVFI_STRING - Поиск по тексту итема. Пока не указано иное, текст итема должен точно совпадать со строкой в LVFINDINFO.psz. Однако поиск нечуствителен к регистру.
LVFI_SUBSTRING - в Windows Vista и позже. Эквивалент LVFI_PARTIAL.
LVFI_WRAP - Продолжение поиска с начала при ненайденном совпадении.
LVFI_NEARESTXY - Поиск итема ближайшего к позиции указанной в LVFINDINFO.pt, в направлении указанном в LVFINDINFO.vkDirection. Флаг поддерживается только для режимов large icon и small icon.

Перевод MSDN (c) by Я :)

12K
30 июля 2008 года
lifs
163 / / 06.09.2007
ну, раз мсдн уже перевели, то вот ссылка:)
здесь можно посмотреть использование вообще, и finditem, в частности
27K
30 июля 2008 года
Everhest
44 / / 20.07.2008
Спасибо всем... Буду медитировать...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог