Форум » [x]Harbour » Форма курсора в режиме вставки и замены? » Ответить

Форма курсора в режиме вставки и замены?

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

Ответов - 22, стр: 1 2 All

Softlog86: Да , GETBOX - действительно меняет форму ... А что делать с EDITBOX ? Их у меня гораздо больше ..... девочки-операторши сильно на это ругаются ... :(

gfilatov2002: Softlog86 пишет: что делать с EDITBOX ? См. пример ниже [pre] /* * 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[/pre]



полная версия страницы