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



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 29.05.07 21:47. Заголовок: TBROWSE и мышь


Я начинающий xharbour'ист, удалось без особого труда перекомпилировать
прогу из клиппера в xharbouиr и даже подключить мышь (в клиппере мышь у
меня не работала). Мышь работает с меню, get объектми, в dbedit.
Но я использую табл.редактор TBROWSE на базе примера из клиппера
Tbdemo.prg он имеет больше возможностей чем dbedit: замораживает
несколько колонок, отдельные колонки в режиме только чтение, раскраск и т.д.
а вот с ним мышь не работает. Может кто сталкивался с такой проблемой. Как
заставить мышь работать в TBROWSE?
Михаил


Спасибо: 0 
Ответов - 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


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 30.05.07 18:29. Заголовок: Re:


Большое сэнк! Мышь заработала, но с глюком.
Одним кликом левой кнопки мыши устанавливается
на нужное поле и сразу входит в режим редактирования,
а в символьных полях еще чего-то пытается изменять
всякую бяку.
Михаил



Спасибо: 0 
Администратор




Пост N: 510
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 31.05.07 10:20. Заголовок: Re:


можно убрать
Keyboard CHR(K_ENTER)


Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 01.06.07 07:46. Заголовок: Re:


К сожалению совет не помог! мыщь работает с полями где режим
"только чтение" и устанавливается на поля где "RW".Но из такиих
полей не выйти. Малейшее шевеление мышкой,даже не нажимая кнопок,
и сразу входим в редактирование. Вот какю бы дать установку в функции
редактирования "DOGET".чтобы эта функция не реагировала на мышь?
Михаил


Спасибо: 0 



Не зарегистрирован
Зарегистрирован: 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
............
Михаил


Спасибо: 0 



Пост N: 75
Зарегистрирован: 12.06.06
ссылка на сообщение  Отправлено: 01.06.07 18:57. Заголовок: Re:


mvbud пишет:

 цитата:
Мышь работает с меню, get объектми ...


Я решил тоже проверить, потому что никогда не пользовался. Так вот - у меня все работает , а
get и reаd - почему-то не хочет . Что нужно сделать или проверить ?

Спасибо: 0 
Профиль



Не зарегистрирован
Зарегистрирован: 01.01.70
ссылка на сообщение  Отправлено: 03.06.07 08:57. Заголовок: Re:


Я подключил только одну команду в начале программы
SET EVENTMASK TO INKEY_ALL
Михаил

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