Форум » GUI » MiniGUI-Browse- поиск по букве » Ответить

MiniGUI-Browse- поиск по букве

valery2: Извините меня, но очень нужна помощь. С Clipperr-ом работаю давно, в Mini - нет и года. Начальству ну очень нужно поиск в прайс-листе по протому нажатию любой русской буквы. Не долго мудрствуя, определил все клавиши и, в частности русские _DefineHotKey ( , 0 , 192 , {|| poisk(chr(192))} ) // буква "А" и т.д. В Browse все цифры и латинские буквы проходят, а русские - никакой реакции. А начальству вынь да полож.

Ответов - 43, стр: 1 2 3 All

_sergey: спасибо, КСС, запустился пример! маленькое замечание: переключение на другую раскладку ([ctrl]+[shift]) добавляется в строку поиска примером интересуюсь просто так, посмотреть на minigui

valery2: В общем, решил все-таки выложить свой, хоть и корявый, но более компактный и абсолютно без глюков: Function MyEvents ( hWnd, nMsg, wParam, lParam ) Local i, x, cFormName := "", cControlName := "" if nMsg == WM_NOTIFY IF GetNotifyCode ( lParam ) == LVN_KEYDOWN i := Ascan( _HMG_aFormHandles , hWnd ) cFormName := if( i > 0, _HMG_aFormNames[ i ], "" ) i := Ascan( _HMG_aControlHandles, GetHwndFrom( lParam ) ) cControlName := if( i > 0, _HMG_aControlNames[ i ], "" ) if cFormName == "Window_1" .and. cControlName == "Browse_1" ppp( GetGridvKey( lparam ),hWnd, nMsg, wParam, lParam ) else Events ( hWnd, nMsg, wParam, lParam ) endif else Events ( hWnd, nMsg, wParam, lParam ) endif else Events ( hWnd, nMsg, wParam, lParam ) endif Return (0) procedure ppp(vparam,hWnd, nMsg, wParam, lParam) local ch := '', ch1:=0 local i local perkod1[74] // массив кодов русских букв local perkod2[74] // массмв кодов клавиш perkod1[1]:=48 perkod1[2]:=49 // а дальше просто топором и кувалдой perkod1[3]:=50 perkod1[4]:=51 // первые 10 - цифры perkod1[5]:=52 perkod1[6]:=53 perkod1[7]:=54 perkod1[8]:=55 perkod1[9]:=56 perkod1[10]:=57 perkod1[11]:=233 // далее идут русские буквы, сначала маленькие, потом заглавные, но не по алфавиту, по клавиатуре - perkod1[12]:=246 // слева->направо, сверху-> вниз perkod1[13]:=243 perkod1[14]:=234 perkod1[15]:=229 perkod1[16]:=237 perkod1[17]:=227 perkod1[18]:=248 perkod1[19]:=249 perkod1[20]:=231 perkod1[21]:=245 perkod1[22]:=250 perkod1[23]:=244 perkod1[24]:=251 perkod1[25]:=226 perkod1[26]:=224 perkod1[27]:=239 perkod1[28]:=240 perkod1[29]:=238 perkod1[30]:=235 perkod1[31]:=228 perkod1[32]:=230 perkod1[33]:=253 perkod1[34]:=255 perkod1[35]:=247 perkod1[36]:=241 perkod1[37]:=236 perkod1[38]:=232 perkod1[39]:=242 perkod1[40]:=252 perkod1[41]:=225 perkod1[42]:=254 perkod1[43]:=201 perkod1[44]:=214 perkod1[45]:=211 perkod1[46]:=202 perkod1[47]:=197 perkod1[48]:=205 perkod1[49]:=195 perkod1[50]:=216 perkod1[51]:=217 perkod1[52]:=199 perkod1[53]:=213 perkod1[54]:=216 perkod1[55]:=212 perkod1[56]:=219 perkod1[57]:=194 perkod1[58]:=192 perkod1[59]:=207 perkod1[60]:=208 perkod1[61]:=206 perkod1[62]:=203 perkod1[63]:=176 perkod1[64]:=198 perkod1[65]:=221 perkod1[66]:=223 perkod1[67]:=215 perkod1[68]:=209 perkod1[69]:=204 perkod1[70]:=200 perkod1[71]:=210 perkod1[72]:=220 perkod1[73]:=193 perkod1[74]:=222 perkod2[1]:=48 perkod2[2]:=49 perkod2[3]:=50 perkod2[4]:=51 perkod2[5]:=52 perkod2[6]:=53 perkod2[7]:=54 perkod2[8]:=55 perkod2[9]:=56 perkod2[10]:=57 perkod2[11]:=81 perkod2[12]:=87 perkod2[13]:=69 perkod2[14]:=82 perkod2[15]:=84 perkod2[16]:=89 perkod2[17]:=85 perkod2[18]:=73 perkod2[19]:=79 perkod2[20]:=80 perkod2[21]:=219 perkod2[22]:=221 perkod2[23]:=65 perkod2[24]:=83 perkod2[25]:=68 perkod2[26]:=70 perkod2[27]:=71 perkod2[28]:=72 perkod2[29]:=74 perkod2[30]:=75 perkod2[31]:=76 perkod2[32]:=186 perkod2[33]:=222 perkod2[34]:=90 perkod2[35]:=88 perkod2[36]:=67 perkod2[37]:=86 perkod2[38]:=66 perkod2[39]:=78 perkod2[40]:=77 perkod2[41]:=188 perkod2[42]:=190 perkod2[43]:=81 perkod2[44]:=87 perkod2[45]:=69 perkod2[46]:=82 perkod2[47]:=84 perkod2[48]:=89 perkod2[49]:=85 perkod2[50]:=73 perkod2[51]:=79 perkod2[52]:=80 perkod2[53]:=219 perkod2[54]:=221 perkod2[55]:=65 perkod2[56]:=83 perkod2[57]:=68 perkod2[58]:=70 perkod2[59]:=71 perkod2[60]:=72 perkod2[61]:=74 perkod2[62]:=75 perkod2[63]:=76 perkod2[64]:=86 perkod2[65]:=222 perkod2[66]:=90 perkod2[67]:=88 perkod2[68]:=67 perkod2[69]:=86 perkod2[70]:=66 perkod2[71]:=78 perkod2[72]:=77 perkod2[73]:=188 perkod2[74]:=190 if GetKeyboardMode() == 1033 if chr(vparam) $ "1234567890QWERTYUIOPASDFGHJKLZXCVBNM" MyPoisk(chr(vparam )) else Events ( hWnd, nMsg, wParam, lParam ) endif elseif GetKeyboardMode() == 1049 ch := chr( ToAsciiEx(vparam) ) ch1:=ToAsciiEx(vparam) if ch $ "1234567890йцукенгшщзхъывапролджэяфчсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ" if ascan(perkod2,vparam)>0 if ascan(perkod1,ch1)=ascan(perkod2,vparam) // вот тут и исчезают глюки MyPoisk(ch) else Events ( hWnd, nMsg, wParam, lParam ) endif else Events ( hWnd, nMsg, wParam, lParam ) endif else Events ( hWnd, nMsg, wParam, lParam ) endif endif return

КСС: _Sergey пишет: однако, сколько версий minigui в интернете! Только две версии - MiniGUI Роберто Лопеса (и команды) и MiniGUI-Ext - это в определённый момент ответвившийся проект, который сопровождает, на сколько я знаю, Григорий Филатов (и команда), который здесь часто бывает А то, что функциональные клавиши порождают код совпадающий с кодом алфавита и заголовки колонок BROWSE прыгают при смене их заголовков я писал в начале, как о имеющемся недостатке. Вот Valery2 вроде бы нашел решение, но оно не очень красивое Я надеялся, что разработчики помогут нам красиво "расковырять" этот виртуальный код нажатой клавиши. Если нет - будем сами, кто как сможет Прыгающие заголовки колонок BROWSE надеюсь разработчики поправят.




полная версия страницы