purebasic.info

PureBasic forum
Текущее время: Пн июл 13, 2020 8:53 pm

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 3 ] 
Автор Сообщение
 Заголовок сообщения: ComboBoxGadget сортировка поиск
СообщениеДобавлено: Вт июн 30, 2020 5:48 pm 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
сделана сортировка с разделением на группы по алфавиту, и поиск
всё сделано на API
может кому интересно такое, пользуйтесь

непонял как это s=GetGadgetText(12) сделать на API, кто знает скажите



ложу архивом, форум иной раз код ломает
Изображение


Вложения:
1.zip [2.4 KiB]
Скачиваний: 18
Буфер обмена02.png [5.4 KiB]
Скачиваний: 0
Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: ComboBoxGadget сортировка поиск
СообщениеДобавлено: Вт июн 30, 2020 10:53 pm 
Не в сети
профессор

Зарегистрирован: Сб фев 06, 2016 6:18 pm
Сообщений: 354
Благодарил (а): 14 раз.
Поблагодарили: 47 раз.
Пункты репутации: 2
newJS писал(а):
непонял как это s=GetGadgetText(12) сделать на API

Возможно так?
Код:
1
2
lpString.s = Space(256)
GetWindowText_(GadgetID(12), @lpString, 256)



Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: ComboBoxGadget сортировка поиск
СообщениеДобавлено: Ср июл 01, 2020 4:19 am 
Не в сети
профессор

Зарегистрирован: Вт май 13, 2014 4:12 am
Сообщений: 957
Благодарил (а): 104 раз.
Поблагодарили: 33 раз.
Пункты репутации: 5
repeat писал(а):
Возможно так?

вроде всё работает как надо
обновил функцию
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
 
Procedure changeElem12()
Protected n, fs.s{22}
 
n=SendMessage_(GadgetID(12), #CB_GETCURSEL, 0, 0); индекс активного
If n<0; идёт ввод
GetWindowText_(GadgetID(12), @fs, 22); текст из редактора бокса
 
If PeekU(@fs)<>32:fs="   "+fs:EndIf
n=SendMessage_(GadgetID(12), #CB_FINDSTRING, 0, @fs); ищем введёный текст
 
If n=>0; что то нашлось
n=SendMessage_(GadgetID(12), #CB_GETLBTEXTLEN, n, 0); сколько символов в найденом элементе
SendMessage_(GadgetID(12), #CB_SELECTSTRING, 0, @fs); выводим найденую строку в редактор бокса
SendMessage_(GadgetID(12), #CB_SETEDITSEL, 0, n<<16|Len(fs)); выделяем НЕ введённые символы
EndIf
 
Else; был выбран другой элемент
SendMessage_(GadgetID(12), #CB_GETLBTEXT, n, @fs); получаем текст активного, также возвращает длину строки
If PeekU(@fs)<>32; если разделитель, смещаемся на следующий элемент
SendMessage_(GadgetID(12), #CB_SETCURSEL, n+1, 0); активируем правильный элемент
EndIf
EndIf
 
EndProcedure
 



Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 3 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Создано на основе phpBB® Forum Software © phpBB Group (блог о phpBB)
Сборка создана CMSart Studio
Русская поддержка phpBB