Автор | Сообщение |
|
| |
Пост N: 223
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.04.12 12:37. Заголовок: Форма курсора в режиме вставки и замены?
Добрый день! Извините, если плохо искал... В досовом приложении разные курсоры в полях экранных форм, зависящие от режима вставки или замены. Для консольного на xHarbour они одинаковы... пробовал играться со шрифтами, но... Подскажите пожалуйста, как задать режим, что бы форма курсора менялась?
|
|
|
Ответов - 22
, стр:
1
2
All
[только новые]
|
|
|
| |
Пост N: 486
Зарегистрирован: 11.06.10
|
|
Отправлено: 25.04.12 13:23. Заголовок: harbour\tests ..
harbour\tests\cursrtst.prg тестили?
|
|
|
|
| |
Пост N: 224
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.04.12 13:26. Заголовок: AlexMyr пишет: harb..
AlexMyr пишет: цитата: | harbour\tests\cursrtst.prg тестили? |
| Нет, но спасибо посмотрю.... хотя хотелось бы чего-то "самоочевидное" и "однократное"
|
|
|
|
| |
Пост N: 225
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.04.12 13:40. Заголовок: в догонку... в приме..
в догонку... в примере демонстрируются несколько форм курсора - это понятно! Вопрос в том, чтобы в зависимости от режима вставки и замены была разная форма курсора
|
|
|
|
| |
Пост N: 487
Зарегистрирован: 11.06.10
|
|
Отправлено: 25.04.12 14:34. Заголовок: Проверил на клиппере..
Проверил на клиппере, форма курсора меняется, на харборе нет.
|
|
|
|
| |
Пост N: 226
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.04.12 16:29. Заголовок: AlexMyr пишет: Пров..
AlexMyr пишет: цитата: | Проверил на клиппере, форма курсора меняется, на харборе нет. |
| А что делать, что бы и на Харборе менялась?
|
|
|
|
| |
Пост N: 488
Зарегистрирован: 11.06.10
|
|
Отправлено: 25.04.12 16:35. Заголовок: написал в харбор юзе..
написал в харбор юзер лист, посмотрим что ответят.
|
|
|
|
| |
Пост N: 227
Зарегистрирован: 12.11.06
|
|
Отправлено: 25.04.12 19:59. Заголовок: AlexMyr пишет: напи..
AlexMyr пишет: цитата: | написал в харбор юзер лист, посмотрим что ответят |
| Спасибо!
|
|
|
|
| постоянный участник
|
Пост 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 ) )
|
|
|
|
| |
Пост N: 489
Зарегистрирован: 11.06.10
|
|
Отправлено: 26.04.12 21:25. Заголовок: Петр пишет: Тестиро..
Петр пишет: цитата: | Тестировал Clipper 5.3b, Clipper 5.2e, - все как в Harbour. |
|
тоже тестировал с clipper 5.3b - форма курсора меняеться, с одним из последних харбором - форма курсора не меняется. Петр пишет: это разве не указывает на совместимость харбора с клипером 5.3?
|
|
|
|
| постоянный участник
|
Пост 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
|
|
|
|
| постоянный участник
|
Пост 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 */
|
|
|
|
|
| |
Пост N: 228
Зарегистрирован: 12.11.06
|
|
Отправлено: 27.04.12 09:04. Заголовок: Спасибо Петр! Наско..
Спасибо Петр! Насколько понял - в xHarbour разработчики закоментировали механизм смены формы курсора в режиме вставки и замены? Подскажите, как возможно это вернуть не пересобирая систему xharbour из сырцов, а заменить "нюанс" в тексте своей программы?
|
|
|
|
| постоянный участник
|
Пост N: 1108
Зарегистрирован: 09.10.06
|
|
Отправлено: 27.04.12 09:16. Заголовок: Если есть доступ к к..
Если есть доступ к к tgetlist.prg, изменить модуль и включить в состав своего приложения. bcc это позволяет делать по умолчанию,, если пользуетесь mingw - там нужно передать какой-то (сейчас уже не помню, на форуме, кажется, это уже обсуждали) параметр.
|
|
|
|
| |
Пост 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 Нет ли какого-нибудь способа это обойти не влазия в инструмент разработки?
|
|
|
|
| постоянный участник
|
Пост 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 ((не всегда!) Но ему и так материала для раздумий подкинули . Тем более, что на этом форуме знаю о библиотеке, наверное, только я
|
|
|
|
| |
Пост N: 230
Зарегистрирован: 12.11.06
|
|
Отправлено: 27.04.12 19:37. Заголовок: Петр - конечно спаси..
Петр - конечно спасибо... буду знать об указанных Вами возможностях сопровоздения и обновления инструмента разработки... но, к сожалению являюсь больше спецом в прикладной области, где инструмент используется, как "черный ящик"... и надеялся, что помогут пока у одних пришлось нового технолога учить составлению технологических карт, а по другим изучать законы и пояснения по ним в плане ведения и отражения корректирующих счетов фактур... В общем спасибо за наколку - будет время детальнее разберусь и порешаю данную программисткую задачку, используя Ваши полезные примечания.
|
|
|
|
| |
Пост 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 ... и усё! форма курсора начала переключаться.
|
|
|
|
| |
Пост N: 121
Зарегистрирован: 10.07.07
|
|
Отправлено: 29.04.12 10:06. Заголовок: AndreyZh пишет: .....
AndreyZh пишет: цитата: | ... непонятно причину закоментированности блока, изменяющего форму курсора ... |
| Возможно это, опять таки, для совместимости с Clipper, а в Clipper для совместимости с dBase-системами, исконное поведение которых, при нажатии клавиши Insert не в изменении формы курсора, а появлении сообщения об этом. А вот будет сообщение появляться или нет зависило от SET SCOREBOARD. Кстати, пример "наследования" исконного поведения - утилита DBU.
|
|
|
|
| |
Пост N: 177
Зарегистрирован: 03.12.08
|
|
Отправлено: 17.10.14 10:01. Заголовок: А у меня в HARBOUR +..
А у меня в HARBOUR + MiniGUI в полях ввода данных (EDITBOX , GETBOX) - форма курсора не меняется - поэтому вопросы : 1) Как сделать визуализацию режима ввода ( ВСТАВКА/ЗАМЕЩЕНИЕ) ? 2) Принудительная смена режима - какой командой ?
|
|
|
|
| moderator
|
Пост N: 671
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.10.14 12:59. Заголовок: Softlog86 пишет: в ..
Softlog86 пишет: цитата: | в HARBOUR + MiniGUI в полях ввода данных (EDITBOX , GETBOX) - форма курсора не меняется |
| GETBOX поддерживает смену формы курсора (см. функцию _SetGetBoxCaret() ) при нажатии клавиши <Insert>
|
|
|
|
| |
Пост N: 178
Зарегистрирован: 03.12.08
|
|
Отправлено: 17.10.14 14:45. Заголовок: Да , GETBOX - действ..
Да , GETBOX - действительно меняет форму ... А что делать с EDITBOX ? Их у меня гораздо больше ..... девочки-операторши сильно на это ругаются ... :(
|
|
|
|
|
| moderator
|
Пост N: 672
Зарегистрирован: 11.02.10
|
|
Отправлено: 17.10.14 16:03. Заголовок: Softlog86 пишет: чт..
Softlog86 пишет: См. пример ниже Скрытый текст
/* * MINIGUI - Harbour Win32 GUI library Demo * */ #include "minigui.ch" FUNCTION Main DEFINE WINDOW Form_1 ; AT 0, 0 ; WIDTH 640 HEIGHT 480 ; TITLE 'Harbour MiniGUI Demo' ; ICON 'demo.ico' ; MAIN ; ON INIT ( Form_1.Edit_1.Value := 'demo' ) ; FONT 'Arial' SIZE 10 DEFINE STATUSBAR STATUSITEM 'HMG Power Ready!' END STATUSBAR @ 30, 10 EDITBOX Edit_1 ; WIDTH 410 ; HEIGHT 140 ; VALUE '' ; TOOLTIP 'EditBox' ; MAXLENGTH 255 ; ON CHANGE ShowRowCol() NOHSCROLL DEFINE BUTTON B ROW 250 COL 10 CAPTION 'Set CaretPos' ACTION ( Form_1.Edit_1.CaretPos := Val( InputBox( 'Set Caret Position', '' ) ), Form_1.Edit_1.SetFocus ) END BUTTON DEFINE TIMER Timer_1 INTERVAL 100 ACTION ShowRowCol() ON KEY INSERT ACTION ( iif( _HMG_IsXPorLater, KeyToggleNT( VK_INSERT ), KeyToggle( VK_INSERT ) ), _SetEditBoxCaret( getcontrolhandle('Edit_1','Form_1') ) ) END WINDOW Form_1.Center() Form_1.Activate() RETURN NIL PROCEDURE ShowRowCol LOCAL s, c, i, e, q s := Form_1.Edit_1.Value c := Form_1.Edit_1.CaretPos e := 0 q := 0 FOR i := 1 TO c IF SubStr ( s, i, 1 ) == Chr( 13 ) e++ q := 0 ELSE q++ ENDIF NEXT i Form_1.StatusBar.Item( 1 ) := 'Row: ' + hb_ntos( e + 1 ) + ' Col: ' + hb_ntos( q ) IF e < 7 Form_1.Edit_1.Refresh ENDIF RETURN STATIC PROCEDURE _SetEditBoxCaret( hWnd ) LOCAL hDC := GetDC( hWnd ) LOCAL aTM := GetTextMetric( hDC ) ReleaseDC( hWnd, hDC ) HideCaret( hWnd ) DestroyCaret() CreateCaret( hWnd, 0, iif( IsInsertActive(), 2, 6 ), aTM[ 1 ] - 1 ) ShowCaret( hWnd ) RETURN
|
|
|
|
Ответов - 22
, стр:
1
2
All
[только новые]
|
|