On-line: tnsr2, гостей 2. Всего: 3 [подробнее..]
АвторСообщение



Пост N: 1
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 12.02.08 15:40. Заголовок: MiniGUI-Browse- поиск по букве


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

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 43 , стр: 1 2 3 All [только новые]


модератор




Пост N: 709
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 12.02.08 16:31. Заголовок: valery2 пишет: опре..


valery2 пишет:

 цитата:
определил все клавиши


Решение простое, но неэффективное
Посмотрите, как это сделать грамотнее в примере из папки samples\Basic\DualBrowse (функция IncrementalSearch()).



Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 2
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 12.02.08 16:35. Заголовок: Большое спасибо, по..


Большое спасибо, попробую.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 3
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 12.02.08 16:59. Заголовок: Посмотрел, попробо..


Посмотрел, попробовал - ну и наворочено. А мне-то всего и надо - в Browse по нажатию любой клавиши ( особенно русские буквы) не просто стать на запись, где есть эта буква, а вызвать мою функцию Poisk(rr), загнав туда, через параметр, эту самую букву, адальше эта самая функция сама уже будет формировать слова, фразы и осуществлять поиск.

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 423
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 12.02.08 17:56. Заголовок: valery2 пишет: Посм..


valery2 пишет:

 цитата:
Посмотрел, попробовал - ну и наворочено.


Joe написал как смог
Найдете более простое и эффективное решение - напишите Григорию, он с удовольствием опубликует.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 4
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 13.02.08 09:01. Заголовок: Неужели ни у кого н..


Неужели ни у кого не вставала подобная проблема? В Clippere в Dbedit все это элементарно, в одну строчку. А сдесь ... Еслиб было время, да побольше опыта. Потому и прошу помощи.

Спасибо: 0 
ПрофильЦитата Ответить



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 13.02.08 09:57. Заголовок: valery2 пишет: Если..


valery2 пишет:

 цитата:
Еслиб было время


В GUI вроде есть TsBrows ,так там по одной букве поиск встроенный должен быть. Ну , а если сам ( в нем же ) то
так:
obi:bKeyChar={ |nKey| Poisk(nKey,oBi,oWn,oFld ) }


Спасибо: 0 
Цитата Ответить



Пост N: 5
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 13.02.08 10:14. Заголовок: Спасибо за подсказ..


Спасибо за подсказку! Надо обжевать.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 6
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 14.02.08 14:19. Заголовок: Еще раз спасибо, ..


Еще раз спасибо, но всеэто не то. TsBrowse тянет за собой кучу переделок в уже существующей проге. А у меня в окне еще 2 Browse и им абсолютно не нужны эти навороты. В результате начинаю путаться с управлением и т.д. Не уверен, что переход полностью на TsBrowse по времени переделки программы целесообразней какого-нибудь собственного "изобретения".

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 20
Зарегистрирован: 04.12.07
ссылка на сообщение  Отправлено: 15.02.08 08:05. Заголовок: Сейчас не могу предл..


Сейчас не могу предложить ничего конкретного, но несколько лет назад,
когда ещё был только MiniGUI, я его тестил и озадачился тем же. И тогда
я пошел по пути DBEDIT - нашел в исходнике с определением окон участок
кода перехватывающий клавиши в BROWSE и просто добавил в конец
(там кажется DO CASE) вызов своей функции. Это был просто эксперимент,
но всё получилось. Как это лучше оформить для использования пока не
знаю, но планирую вернуться к этому в ближайшие две недели.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 7
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 15.02.08 09:01. Заголовок: КСС пишет:я пошел п..


КСС пишет:
 цитата:
я пошел по пути DBEDIT - нашел в исходнике с определением окон участок
кода перехватывающий клавиши в BROWSE и просто добавил в конец
(там кажется DO CASE) вызов своей функции.


Это чень интересно. Нельзя-ли ссылочку на исходник DBEDIT, или сам текст исходника на moongo@mail.ru ?!! Весьма презнателен заранее !

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 8
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 15.02.08 09:03. Заголовок: КСС Прошу прощ..


КСС
Прошу прощения - Весьма прИзнателен .

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 430
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.02.08 11:49. Заголовок: valery2, КСС в принц..


valery2, КСС в принципе предложил тот же путь решения (в общем правильный), что и Joe, только в худшем исполнении. В лучшем случае вы можете получить клон MiniGUI, который не сможете поддерживать. Ну, а в в худшем..

Григорий - пример Joe нужно убирать, пусть пользователи учатся использовать
SET EVENTS FUNCTION TO MYEVENTS

И пожалуйста исправьте этот фрагмент:

Case GetGridvKey(lParam) == 46 // DEL

If _HMG_aControlPicture == .t.


Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 25
Зарегистрирован: 04.12.07
ссылка на сообщение  Отправлено: 15.02.08 11:51. Заголовок: Эта обработка кнопок..


Эта обработка кнопок описана, кажется, в файле исходников h_windows.prg.
Как я уже писал, дело было давно и это был эксперимент. Написал это здесь
в качестве зацепки для других программистов.
Планирую в ближайшее время повторить изыскания, потому что пишу программу на MiniGUI-Ext. Если что-то вразумительное получится - выложу.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 9
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 15.02.08 12:23. Заголовок: Петр пишет: ..


Петр пишет:
 цитата:
КСС в принципе предложил тот же путь решения (в общем правильный), что и Joe, только в худшем исполнении.


Ваши намерения понятны, но :
1. Используя пример JOE , сразу исчезает MENU в ext форме
2. В h_windows.prg огромное количество переопределенных функций и переменных, существующих в библиотеках, а расследование, что - не нужно и что за собой тянет их удаление занимает много времени.
3. Вы пишите:
 цитата:
пусть пользователи учатся использовать
SET EVENTS FUNCTION TO MYEVENTS

Но по EVENTS практически ничего нет в документации, а примеров - кот наплакал. Теперь Вы вообще хотите убрать пример JOE.
А на чем учиться?

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 712
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.02.08 12:34. Заголовок: Петр пишет: исправь..


Петр пишет:

 цитата:
исправьте этот фрагмент:

Case GetGridvKey(lParam) == 46 // DEL

If _HMG_aControlPicture == .t.



Петр
Спасибо! Я уже поправил этот свой ляп в новом релизе

Может, есть еще какие-либо дополнения для нового релиза?

Спасибо: 0 
ПрофильЦитата Ответить
постоянный участник


Пост N: 431
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 15.02.08 13:28. Заголовок: "В общем правиль..


"В общем правильный" путь - это переопределение реакции окна BROWSE на событие LVN_KEYDOWN.

MiniGUI позволяет делать это в два способа - или переопределять функцию Events или через SET EVENTS FUNCTION TO определить пользовательскую функцию, которая будет делать какие-то специфические для программы вещи и потом уже вызывать глобальную Events()

В не зависимости то того, как вы будете переопределять Events(), вы можете столкнуться с проблемой клонов и дальшей несовместимости с сл.версиями MiniGUI (если такие будут) - это и в случае изменения исходников самой библиотеки и в варианте Joe (включении в исходники программы модифицированной Events).
Вы это сами подтвердили, приведя пример с MENU ext. Раз так, то нечего пропагандировать плохой стиль программирования.
Да - это допустимо, но вы должны делать это осознанно и только в случае если нет других возможностей или вы решили сделать свой клон библиотеки.

Теперь о h_windows.prg - я предлагал Григорию вынести Events в отдельный файл, к сожалению это предложение было проигнорировано.

Вопрос о документации всплывает не первый раз, и опять же к сожалению я должен констатировать, что у MiniGUI Ext нет сообщества. Желающих работать над совершенствованием библиотеки (исходники, документация) - фактически нет. И количеством примеров это компенсировать нельзя.


Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 713
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.02.08 14:09. Заголовок: Петр пишет: Желающи..


Петр пишет:

 цитата:
Желающих работать над совершенствованием библиотеки (исходники, документация) - фактически нет.


Подтверждением этого может служить обсуждение библиотеки на этом форуме (иногда создается впечатление, что я беседую сам с собой )

Петр пишет:

 цитата:
количеством примеров это компенсировать нельзя.


Снова согласен, особенно, если эти примеры обычно никто не изучает...

Петр пишет:

 цитата:
я предлагал Григорию вынести Events в отдельный файл


Это не проблема!
Если можно, повторите снова свою аргументацию по этому вопросу

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 10
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 15.02.08 14:11. Заголовок: Простите, Петр, но ..


Простите, Петр, но никто здесь не пытается "пропагандировать плохой стиль программирования". Происходит только взаимный обмен опытом и обучение, как на своих так и на чужых положительных и ошибочных примерах. Или это Вы решили нас отшлёпать по попке (настроение такое)?
А если серьезно, Вы могли обратить внимание, что в MiniGUI я недавно, и многое для меня еще неясно. Поэтому приму ЛЮБУЮ, но достаточно внятную, помощь.

Спасибо: 0 
ПрофильЦитата Ответить



Пост N: 11
Зарегистрирован: 12.02.08
ссылка на сообщение  Отправлено: 15.02.08 14:38. Заголовок: В догонку. Встав..


В догонку.
Вставил следующее:
 цитата:
Function MyEvents ( hWnd, nMsg, wParam, lParam )
*------------------------------------------------------------------------------*
Local i, x
if nMsg == WM_NOTIFY

IF GetNotifyCode ( lParam ) == LVN_KEYDOWN
ppp(lParam)
endif

else
Events ( hWnd, nMsg, wParam, lParam )

endif

Return (0)

procedure ppp(lparam)
if chr(GetGridvKey( lParam )) $ '1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMйцукенгшщзхъфывапролджэячсмитьбюёЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮЁ'
msginfo(chr(GetGridvKey( lParam )))
endif
return

Прекрасно реагирует, но только на цифры и латинские бувы (причем, почему-то shr() выдает на экран латинские буквы только в верхнем регистре, хотя жму и так и этак), на кирилицу-ноль внимания!

Спасибо: 0 
ПрофильЦитата Ответить
модератор




Пост N: 714
Зарегистрирован: 25.05.05
ссылка на сообщение  Отправлено: 15.02.08 15:49. Заголовок: Петр пишет: Теперь ..


Петр пишет:

 цитата:
Теперь о h_windows.prg - я предлагал Григорию вынести Events в отдельный файл, к сожалению это предложение было проигнорировано.


Выделил функцию Events() вместе со связанными с ней функциями _OnGetMinMaxInfo(), _SetNextFocus(), _PushEventInfo() и _PopEventInfo() в отдельный h_events.prg




Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 43 , стр: 1 2 3 All [только новые]
Ответ:
1 2 3 4 5 6 7 8 9
большой шрифт малый шрифт надстрочный подстрочный заголовок большой заголовок видео с youtube.com картинка из интернета картинка с компьютера ссылка файл с компьютера русская клавиатура транслитератор  цитата  кавычки моноширинный шрифт моноширинный шрифт горизонтальная линия отступ точка LI бегущая строка оффтопик свернутый текст

показывать это сообщение только модераторам
не делать ссылки активными
Имя, пароль:      зарегистрироваться    
Тему читают:
- участник сейчас на форуме
- участник вне форума
Все даты в формате GMT  3 час. Хитов сегодня: 136
Права: смайлы да, картинки да, шрифты да, голосования нет
аватары да, автозамена ссылок вкл, премодерация откл, правка нет