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



Пост N: 63
Зарегистрирован: 04.12.07
ссылка на сообщение  Отправлено: 17.11.08 09:37. Заголовок: Ошибка обработки мыши в MENU TO


Обнаружил ошибку при обработке нажатия левой кнопки мыши в команде MENU TO:
меню срабатывает вне поля кнопок этого меню. Ошибка актуальна для обеих ветвей Харбора.
Ошибка находится вот здесь:

 цитата:

#ifdef HB_COMPAT_C53
CASE K_MOUSEMOVE
EXIT
CASE K_LBUTTONDOWN
CASE K_LDBLCLK
IF ( nMouseClik := HitTest( s_aLevel[ nPointer - 1 ], ;
MRow(), MCol() ) ) > 0
n := nMouseClik
ENDIF
IF nKey == K_LDBLCLK
lExit := .T.
ENDIF

EXIT
#endif


Этот код должен находится внутри предыдущего условия IF, а поскольку проверка на K_LDBLCLK там уже произведена, то необходимо перенести только одну строку, а эти закомментировать:

 цитата:

#ifdef HB_COMPAT_C53
CASE K_MOUSEMOVE
EXIT
CASE K_LBUTTONDOWN
CASE K_LDBLCLK
IF ( nMouseClik := HitTest( s_aLevel[ nPointer - 1 ], ;
MRow(), MCol() ) ) > 0
n := nMouseClik
lExit := .T.
ENDIF
//IF nKey == K_LDBLCLK
// lExit := .T.
//ENDIF
EXIT
#endif


С ошибкой всё.

MENU TO срабатывает на dbl-клик мыши. Мне лично это не подходит - считаю правильным, когда меню срабатывает сразу при нажатии левой кнопки мыши. Это также можно исправить здесь же:

 цитата:

#ifdef HB_COMPAT_C53
CASE K_MOUSEMOVE
EXIT
CASE K_LBUTTONDOWN
//CASE K_LDBLCLK
IF ( nMouseClik := HitTest( s_aLevel[ nPointer - 1 ], ;
MRow(), MCol() ) ) > 0
n := nMouseClik
lExit := .T.
ENDIF
//IF nKey == K_LDBLCLK
// lExit := .T.
//ENDIF
EXIT
#endif


Также хочу поделиться своим способом внесения изменений в исходники Харбора. Возможно начинающим это пригодится. По науке, после внесения этих изменений, необходимо перекомпилировать соответствующую библиотеку. Но пойди разберись какую именно ?! Да и постоянное внесение изменений рано или поздно приведёт к появлению у пользователя третьей ветки Харбора - собственной.
Ещё с Clipper-а я обнаружил, что создание в своём проекте собственной функции с именем совпадающим с именем встроенной, "накрывает" встроенную функцию. Поэтому, можно просто включить в свой проект копию файла ...\Harbour\source\rtl\menuto.prg и внести исправления в него. Если обнаружится, что разработчики исправили ошибку или внесли новый, улучшенный функционал, то файл просто исключается из проекта. Я так поступил уже с несколькими файлами исходников.

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


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

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