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



Не зарегистрирован
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 24.09.13 16:10. Заголовок: кнопки Alt Ctrl Shift


подскажите новичку. Пытаюсь перевести Clipper 5.01 на xHarbour. Нужно отслеживать при ожидании ввода, нажата ли Alt и т.п. Т.е. отдельно сами по себе, без других кнопок. В зависимости от этого на экране меняются подписи для кнопок ну и прочее.

В clippere делал функцию на C, использовались bioskey() или вызовы INT16. В BCC5.5 ничего подходящего не нашел. Есть решение ?

Спасибо: 0 
ПрофильЦитата Ответить
Ответов - 11 [только новые]


администратор




Пост N: 3589
Зарегистрирован: 17.05.05
ссылка на сообщение  Отправлено: 24.09.13 16:38. Заголовок: как вариант посмотре..


как вариант посмотреть тему http://clipper.borda.ru/?1-4-0-00000339-000-0-0-1368860560

еще можно посмотреть в сторону HB_GTI_KBDSHIFTS HB_gtInfo()

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





Пост N: 303
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 24.09.13 17:44. Заголовок: Работало В Clipper, ..


Работало В Clipper, продолжает работать в Harbour (про xHarbour не в курсе):

* --------------- * 
FUNC ShiftPressed()

RETURN ISBIT(KBDSTAT(),1) .OR. ISBIT(KBDSTAT(),2)

* -------------- *
FUNC CtrlPressed()

RETURN ISBIT(KBDSTAT(),3)

* ------------- *
FUNC AltPressed()

RETURN ISBIT(KBDSTAT(),4)

* ------------- *
FUNC ScrollLock()

RETURN ISBIT(KBDSTAT(),5)

* ---------- *
FUNC NumLock()

RETURN ISBIT(KBDSTAT(),6)

* ----------- *
FUNC CapsLock()

RETURN ISBIT(KBDSTAT(),7)
* ------------ *


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



Пост N: 1
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 24.09.13 22:49. Заголовок: спасибо ! значит у м..


спасибо ! значит у меня guide кривой. Isbit в нем есть, а kbdstat нет.


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



Пост N: 3
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 25.09.13 00:36. Заголовок: странно, сделал тест..


странно, сделал тестовую prg в xHarbour 1.2.0 - в цикле индицирую состояние kbdstat(). Показывается только первоначальное значение, как было при запуске программы. А на нажатия не реагирует. Что не так ?

proc qwe
Do while .t.
@ 1,20 say KBDSTAT()
Enddo
quit


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




Пост N: 3009
Зарегистрирован: 23.05.05
ссылка на сообщение  Отправлено: 25.09.13 10:26. Заголовок: Этот тест в Harbour ..


Этот тест в Harbour отрабатывает нормально. Если у вас еще нет багажа программ, написанных на xHarbour. то лучше сразу брать Harbour, а не xHarbour.

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



Пост N: 4
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 25.09.13 13:35. Заголовок: Ура ! На HB 3.0.0 за..


Ура ! На HB 3.0.0 заработало. Теперь бы разобраться, как установить 3.2.0

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





Пост N: 307
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 25.09.13 14:34. Заголовок: Отсюда: https://gith..


Отсюда: https://github.com/harbour/core


 цитата:
Harbour unstable binaries (updated once a day from live source repository)

Windows (unified):



можно взять скомпилированные бинарники и просто заменить полностью ими папку с Harbour 3.0.0

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



Пост N: 5
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 25.09.13 16:26. Заголовок: Все поставилось. Все..


Все поставилось. Все-таки по первому впечатлению Harb дружественнее, чем xHarb.
Сходу подсказал, какую lib прицепить, чтобы заработали Blinkerоские функции. Пару дней точно сэкономил, иначе по незнанке стал бы переписывать функцию вызова внешних приложений.

Может на вскидку подскажет кто, фукнции в harbour (заменить старые С-шные):
- ген.случ.чисел, и нужно ли его инициализировать (на С rand() и srand())
- установка и запрос текущего диска, желательно с числовым параметром (0- A: и т.д.) (на С getdisk и setdisk)
- установка сист.даты (на С setdate)
- установка формы курсора (на С INT 0x10)
- чтение байта готовности старого LPT принтера

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





Пост N: 309
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 25.09.13 19:30. Заголовок: Генератор случайных ..


Генератор случайных чисел - стандартный, "клипперовский" RAND().
Форма курсора - SETCURSOR()
С системной датой лучше не баловаться - в случае наличия контроллера домена фокус не пройдет.
Текущий диск/каталог DISKCHANGE() / DISKNAME() / SET DEFAULT TO ...
По принтеру - в среде Windows уже много лет на разных машинах/принтерах, поддерживающих дос-печать, прекрасно работает простое копирование файла на LPT/PRN, страницы разделяются символом chr(12).

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



Пост N: 6
Зарегистрирован: 24.09.13
ссылка на сообщение  Отправлено: 26.09.13 12:00. Заголовок: все оказалось проще,..


все оказалось проще, все эти функции и из bcc прицепились. Т.е.С-шные функции Clipper extend после небольшого шаманства прицепились. Прикол оказался в том, что имя функции в синтаксисе HB_FUNC( ИМЯ ) обязательно должно быть БОЛЬШИМИ буквами. Иначе линковщик ругается на ненайденую ссылку. Хотя вызов в клиппере идет маленькими. Полдня на этот косяк убил.

А вот SETCURSOR- это не то. Он просто переключает тип курсора. А нужна настройка самого типа курсора. Иногда после вызова внешнего приложения портится вид курсора. Например, тонкое стандартное подчеркивание становится толще. И перебороть в клиппере это получалось только повторной настройкой курсора через bios-функцию, чтобы не перезапускать прогу. Вероятно, из-за смены режимов экрана. Может теперь это и не понадобится.

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





Пост N: 310
Зарегистрирован: 08.07.06
ссылка на сообщение  Отправлено: 26.09.13 15:35. Заголовок: Читайте доку по SETC..


Читайте доку по SETCURSOR: http://www.itlnet.net/programming/program/reference/c53g01c/ng9dd92.html
и setcurs.ch:

 
Syntax

SETCURSOR([<nCursorShape>]) --> nCurrentSetting

Arguments

<nCursorShape> is a number indicating the shape of the cursor. For
simpler coding, the Setcurs.ch header file provides descriptive names
for the various cursor shapes as shown in the table below:

Cursor Shapes
------------------------------------------------------------------------
Shape Value Setcurs.ch
------------------------------------------------------------------------
None 0 SC_NONE
Underline 1 SC_NORMAL
Lower half block 2 SC_INSERT
Full block 3 SC_SPECIAL1
Upper half block 4 SC_SPECIAL2
------------------------------------------------------------------------


В clipper 5.2e + CT III эта функция действительно чудила. В некоторых местах я делал что-то типа SETCURSOR(1); INKEY(.1); SETCURSOR(1)
В Clipper S'87 и Harbour работает норм - все навороты убрал.

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

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