Автор | Сообщение |
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 29.05.07 21:47. Заголовок: TBROWSE и мышь
Я начинающий xharbour'ист, удалось без особого труда перекомпилировать прогу из клиппера в xharbouиr и даже подключить мышь (в клиппере мышь у меня не работала). Мышь работает с меню, get объектми, в dbedit. Но я использую табл.редактор TBROWSE на базе примера из клиппера Tbdemo.prg он имеет больше возможностей чем dbedit: замораживает несколько колонок, отдельные колонки в режиме только чтение, раскраск и т.д. а вот с ним мышь не работает. Может кто сталкивался с такой проблемой. Как заставить мышь работать в TBROWSE? Михаил
|
|
|
Ответов - 7
[только новые]
|
|
|
| Администратор
|
Пост N: 509
Зарегистрирован: 23.05.05
|
|
Отправлено: 30.05.07 13:36. Заголовок: Re:
примерно так: вставить в цикл обработки события: CASE ( nKey == K_LBUTTONDOWN .or. nKey == K_LDBLCLK ) mBrowse(oB) STATIC FUNCTION mBrowse(oB) // ------------------------------------------------------------- // Обработка нажатия мышки для TBrowse - обьекта oB // ------------------------------------------------------------- Local rowMouse := MRow(), colMouse := MCol() Local cCol := Col(), cRow := Row() Local newCol, newRow IF rowMouse >= oB:nTop .and. rowMouse <= oB:nBottom .and.; colMouse >= oB:nLeft .and. colMouse <= oB:nRight WHILE colMouse < cCol .or. colMouse > cCol + oB:colWidth(oB:colPos) + 1 IF colMouse < cCol IF oB:colPos == 1 EXIT ENDIF cCol -= oB:colWidth(oB:colPos - 1) + 1 oB:left() ELSE IF oB:colPos == oB:colCount EXIT ENDIF cCol += oB:colWidth(oB:colPos) + 1 oB:right() ENDIF ENDDO IF rowMouse != cRow oB:deHilite() oB:rowPos += rowMouse - cRow #ifdef __HARBOUR__ if oB:rowPos < 1 oB:rowPos := 1 endif #endif ELSE Keyboard CHR(K_ENTER) ENDIF ELSEIF colMouse == oB:nRight + 1 IF rowMouse == oB:nTop + 2 oB:up() ELSEIF rowMouse == oB:nBottom - 2 oB:down() ENDIF ENDIF RETURN NIL
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 30.05.07 18:29. Заголовок: Re:
Большое сэнк! Мышь заработала, но с глюком. Одним кликом левой кнопки мыши устанавливается на нужное поле и сразу входит в режим редактирования, а в символьных полях еще чего-то пытается изменять всякую бяку. Михаил
|
|
|
|
| Администратор
|
Пост N: 510
Зарегистрирован: 23.05.05
|
|
Отправлено: 31.05.07 10:20. Заголовок: Re:
можно убрать Keyboard CHR(K_ENTER)
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 01.06.07 07:46. Заголовок: Re:
К сожалению совет не помог! мыщь работает с полями где режим "только чтение" и устанавливается на поля где "RW".Но из такиих полей не выйти. Малейшее шевеление мышкой,даже не нажимая кнопок, и сразу входим в редактирование. Вот какю бы дать установку в функции редактирования "DOGET".чтобы эта функция не реагировала на мышь? Михаил
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 01.06.07 14:34. Заголовок: Re:
Проблему решил.Мышка работает в Tbrowse полноценно. Большое сэнк за советы. Может кому интересно будет. В обработчике нажатий ApplyKey(browse, nKey) добавил запрет редактирования на действия мышки: ............. OTHERWISE NPOS=browse:colPos if nKey <> K_MOUSEMOVE .and. nKey <> K_LBUTTONDOWN if sele()=2 .and. npos<>10 .and.npos<>6 KEYBOARD CHR(13) DoGet(browse) endif endif ............ Михаил
|
|
|
|
| |
Пост N: 75
Зарегистрирован: 12.06.06
|
|
Отправлено: 01.06.07 18:57. Заголовок: Re:
mvbud пишет: цитата: | Мышь работает с меню, get объектми ... |
| Я решил тоже проверить, потому что никогда не пользовался. Так вот - у меня все работает , а get и reаd - почему-то не хочет . Что нужно сделать или проверить ?
|
|
|
|
| |
Не зарегистрирован
Зарегистрирован: 01.01.70
|
|
Отправлено: 03.06.07 08:57. Заголовок: Re:
Я подключил только одну команду в начале программы SET EVENTMASK TO INKEY_ALL Михаил
|
|
|
|