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





Пост N: 223
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.04.12 12:37. Заголовок: Форма курсора в режиме вставки и замены?


Добрый день!

Извините, если плохо искал... В досовом приложении разные курсоры в полях экранных форм, зависящие от режима вставки или замены. Для консольного на xHarbour они одинаковы... пробовал играться со шрифтами, но... Подскажите пожалуйста, как задать режим, что бы форма курсора менялась?

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





Пост N: 486
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.04.12 13:23. Заголовок: harbour\tests ..


harbour\tests\cursrtst.prg тестили?

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





Пост N: 224
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.04.12 13:26. Заголовок: AlexMyr пишет: harb..


AlexMyr пишет:

 цитата:
harbour\tests\cursrtst.prg тестили?


Нет, но спасибо посмотрю.... хотя хотелось бы чего-то "самоочевидное" и "однократное"

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





Пост N: 225
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.04.12 13:40. Заголовок: в догонку... в приме..


в догонку... в примере демонстрируются несколько форм курсора - это понятно! Вопрос в том, чтобы в зависимости от режима вставки и замены была разная форма курсора

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



Пост N: 487
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.04.12 14:34. Заголовок: Проверил на клиппере..


Проверил на клиппере, форма курсора меняется, на харборе нет.

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





Пост N: 226
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.04.12 16:29. Заголовок: AlexMyr пишет: Пров..


AlexMyr пишет:

 цитата:
Проверил на клиппере, форма курсора меняется, на харборе нет.


А что делать, что бы и на Харборе менялась?

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



Пост N: 488
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 25.04.12 16:35. Заголовок: написал в харбор юзе..


написал в харбор юзер лист, посмотрим что ответят.

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





Пост N: 227
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 25.04.12 19:59. Заголовок: AlexMyr пишет: напи..


AlexMyr пишет:

 цитата:
написал в харбор юзер лист, посмотрим что ответят


Спасибо!

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


Пост N: 1103
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.04.12 19:58. Заголовок: AlexMyr пишет: напи..


AlexMyr пишет:

 цитата:
написал в харбор юзер лист, посмотрим что ответят.



Читал вопрос и читал ответы..
Тестировал Clipper 5.3b, Clipper 5.2e, - все как в Harbour.

Если спрашивающий, хочет менять форму курсора, то или пусть откомпилирует Harbour без HB_COMPAT_C53, или в tgetlist.prg заменит
SetCursor( iif( ::nSaveCursor == SC_NONE, SC_NORMAL, ::nSaveCursor ) )
на
SetCursor( iif( Set( _SET_INSERT ), SC_INSERT, SC_NORMAL ) )





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



Пост N: 489
Зарегистрирован: 11.06.10
ссылка на сообщение  Отправлено: 26.04.12 21:25. Заголовок: Петр пишет: Тестиро..


Петр пишет:

 цитата:
Тестировал Clipper 5.3b, Clipper 5.2e, - все как в Harbour.

тоже тестировал с clipper 5.3b - форма курсора меняеться, с одним из последних харбором - форма курсора не меняется.
Петр пишет:

 цитата:
HB_COMPAT_C53

это разве не указывает на совместимость харбора с клипером 5.3?

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


Пост N: 1106
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.04.12 22:11. Заголовок: AlexMyr пишет: это ..


AlexMyr пишет:

 цитата:
это разве не указывает на совместимость харбора с клипером 5.3?


Вот именно, что указывает.

А теперь откройте

* Getsys.prg
* Standard Clipper 5.3 GET/READ Subsystem
* Version 5.3b.
* Copyright (c) 1990 - 1997, Computer Associates International, Inc.
* All rights reserved.

и посмотрите реализацию, там же, что написано (не нужное опускаю)

FUNCTION ReadModal
...
nSaveCursor := SETCURSOR( SC_NONE )
...
saStatics[ SNSVCURSOR ] := SETCURSOR( SC_NONE ) // Added. !! т.е. saStatics[ SNSVCURSOR ] == SC_NONE
...
тут вызов GetReader
...
SETCURSOR( saStatics[ SNSVCURSOR ] ) // Changed.

PROCEDURE GetReader
// Apply keystrokes until exit
WHILE ( oGet:exitState == GE_NOEXIT .AND. !saStatics[ SLKILLREAD ] )
SETCURSOR( IIF( saStatics[ SNSVCURSOR ] == SC_NONE, ;
SC_NORMAL, saStatics[ SNSVCURSOR ] ) ) // Added IIF().
nKey := INKEY( 0 )
SETCURSOR( SC_NONE )
GetApplyKey( oGet, nKey, GetList, oMenu, aMsg )
nRow := ROW()
nCol := COL()
ShowGetMsg( oGet, aMsg )
DevPos( nRow, nCol )
ENDDO

Вот вам и совместимость с Clipper 5.3b


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


Пост N: 1107
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 26.04.12 22:42. Заголовок: Кстати, только замет..


Кстати, только заметил, что
AndreyZh пишет:

 цитата:
Для консольного на xHarbour они одинаковы...


Так вот в xHarbour tgetlist.prg есть такие закомментированые строки
      case K_INS 
//if ! lPassword
Set( _SET_INSERT, ! Set( _SET_INSERT ) )
::ShowScoreboard()
//endif
/* 2007/SEP/24 - EF - Toggle cursor shape at insert mode on/off
* Uncomment it, if you want this behaviour.
*if ::nSaveCursor != SC_NONE
* ::nSaveCursor := if( Set(_SET_INSERT), SC_INSERT, SC_NORMAL )
*endif
*/



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





Пост N: 228
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.04.12 09:04. Заголовок: Спасибо Петр! Наско..


Спасибо Петр!

Насколько понял - в xHarbour разработчики закоментировали механизм смены формы курсора в режиме вставки и замены? Подскажите, как возможно это вернуть не пересобирая систему xharbour из сырцов, а заменить "нюанс" в тексте своей программы?

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


Пост N: 1108
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.04.12 09:16. Заголовок: Если есть доступ к к..


Если есть доступ к к tgetlist.prg, изменить модуль и включить в состав своего приложения. bcc это позволяет делать по умолчанию,, если пользуетесь mingw - там нужно передать какой-то (сейчас уже не помню, на форуме, кажется, это уже обсуждали) параметр.

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





Пост N: 229
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.04.12 18:11. Заголовок: Петр пишет: Если ес..


Петр пишет:

 цитата:
Если есть доступ к к tgetlist.prg, изменить модуль и включить в состав своего приложения. bcc это позволяет делать по умолчанию,, если пользуетесь mingw - там нужно передать какой-то (сейчас уже не помню, на форуме, кажется, это уже обсуждали) параметр.



В принципе данный приём знаком и им сдуру пользовался в "детстве" на клиппере... но должен буду затем отслеживать изменения исходников (смены версий xHarbour) или полностью контролировать баги данного модуля... не нравится кроме этого посмотрел исходник "у меня", где xharbour/source/wvwtools\tgetlist.prg от 2007 года и там вроде бы всё нормально:

 
CASE K_INS
IF Set( _SET_INSERT )
Set( _SET_INSERT, .F. )
SetCursor( SC_NORMAL )
ELSE
Set( _SET_INSERT, .T. )
SetCursor( SC_INSERT )
ENDIF
EXIT


Нет ли какого-нибудь способа это обойти не влазия в инструмент разработки?

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


Пост N: 1111
Зарегистрирован: 09.10.06
ссылка на сообщение  Отправлено: 27.04.12 19:24. Заголовок: AndreyZh пишет: Нет..


AndreyZh пишет:

 цитата:
Нет ли какого-нибудь способа это обойти не влазия в инструмент разработки?


Я не знаю.
AndreyZh пишет:

 цитата:
должен буду затем отслеживать изменения исходников


Это не проблема - diff, xdiff, VisualDiff, WinMerge позволят свести к минимуму ваши усилия.

И раз пошла такая.., в корзинке у разработчиков Harbour (contrib), есть библиотека hbxdiff.
Тут на днях один человек спрашивал, как ему обновляться с нета, так мне сильно хотелось подсказать ему. что не всегда нужно скачивать весь файл, а можно скачать так называемую заплатку (разницу, дельту) и пропатчить существующий файл (файлы).
Так, с недавних пор, при обновлении поступает OS Suse, вместо традиционных rpm пакетов, для обновления используются drpm - delta-rpm ((не всегда!)
Но ему и так материала для раздумий подкинули .

Тем более, что на этом форуме знаю о библиотеке, наверное, только я

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





Пост N: 230
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 27.04.12 19:37. Заголовок: Петр - конечно спаси..


Петр - конечно спасибо... буду знать об указанных Вами возможностях сопровоздения и обновления инструмента разработки... но, к сожалению являюсь больше спецом в прикладной области, где инструмент используется, как "черный ящик"... и надеялся, что помогут пока у одних пришлось нового технолога учить составлению технологических карт, а по другим изучать законы и пояснения по ним в плане ведения и отражения корректирующих счетов фактур...

В общем спасибо за наколку - будет время детальнее разберусь и порешаю данную программисткую задачку, используя Ваши полезные примечания.

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





Пост N: 231
Зарегистрирован: 12.11.06
ссылка на сообщение  Отправлено: 29.04.12 08:01. Заголовок: Доброе утро! В обще..


Доброе утро!

В общем, если кому интересно... решение проблемки, подсказанное Петром и проверенное мной:

1. Берём исходник tgetlist.prg из каталога xHarbour\source\rtl... я же ссылался на какой-то "левый" исходник tgetlist.prg каталога xHarbour\source\WvWTools
2. Копируем его в каталог проекта
3. Убираем комментарий (непонятно причину закоментированности блока, изменяющего форму курсора) - получилось:

 
case K_INS
Set( _SET_INSERT, ! Set( _SET_INSERT ) )
::ShowScoreboard()
/* 2007/SEP/24 - EF - Toggle cursor shape at insert mode on/off
* Uncomment it, if you want this behaviour.*/
if ::nSaveCursor != SC_NONE
::nSaveCursor := if( Set(_SET_INSERT), SC_INSERT, SC_NORMAL )
endif


4. Подключаю модули в проект, просто добавив его в сборку:
 
OBJFILES = $(OBJ)\LS.obj $(OBJ)\TGETLIST.obj $(OBJ)\ACCOUNT.obj $(OBJ)\CASH_ORD.obj ....
PRGFILES = LS.PRG TGETLIST.PRG ACCOUNT.PRG CASH_ORD.PRG ...


и усё! форма курсора начала переключаться.

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



Пост N: 121
Зарегистрирован: 10.07.07
ссылка на сообщение  Отправлено: 29.04.12 10:06. Заголовок: AndreyZh пишет: .....


AndreyZh пишет:

 цитата:
... непонятно причину закоментированности блока, изменяющего форму курсора ...


Возможно это, опять таки, для совместимости с Clipper, а в Clipper для совместимости с dBase-системами, исконное поведение которых, при нажатии клавиши Insert не в изменении формы курсора, а появлении сообщения об этом. А вот будет сообщение появляться или нет зависило от SET SCOREBOARD.
Кстати, пример "наследования" исконного поведения - утилита DBU.

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



Пост N: 177
Зарегистрирован: 03.12.08
ссылка на сообщение  Отправлено: 17.10.14 10:01. Заголовок: А у меня в HARBOUR +..


А у меня в HARBOUR + MiniGUI в полях ввода данных (EDITBOX , GETBOX) - форма курсора не меняется - поэтому вопросы :

1) Как сделать визуализацию режима ввода ( ВСТАВКА/ЗАМЕЩЕНИЕ) ?
2) Принудительная смена режима - какой командой ?


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




Пост N: 671
Зарегистрирован: 11.02.10
ссылка на сообщение  Отправлено: 17.10.14 12:59. Заголовок: Softlog86 пишет: в ..


Softlog86 пишет:

 цитата:
в HARBOUR + MiniGUI в полях ввода данных (EDITBOX , GETBOX) - форма курсора не меняется


GETBOX поддерживает смену формы курсора (см. функцию _SetGetBoxCaret() ) при нажатии клавиши <Insert>

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

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