I suggest these changes to the TRichEdit5 class
1) bug on resize image in InsertBitmap
Code: Select all
METHOD InsertBitmap( hBitmap, nSizeX, nSizeY, lSpecial ) CLASS TRichEdit5
local oClp
DEFAULT lSpecial := .F.
#ifndef _WIN64
/*****
::InsertPicture5( hBitmap ) */
::InsertPicture5( hBitmap, nSizeX, nSizeY )
#else
if !Empty( hBitMap )
oClp := TClipBoard():New( CF_BITMAP, ::oWnd )
oClp:SetBitmap( hBitmap )
if lSpecial
::PasteSpecial()
else
::Paste()
endif
endif
#endif
Return nil
2a) add a new method LostFocus
Code: Select all
CLASS TRichEdit5 FROM TControl
...
...
/*****/
METHOD LostFocus( hWndGetFocus ) INLINE ::PostMsg( FM_CHANGE ), ::Super:LostFocus( hWndGetFocus )
ENDCLASS
Code: Select all
METHOD KeyChar( nKey, nFlags ) CLASS TRichEdit5
if ::lReadOnly .and. ! GetKeyState( VK_ESCAPE )
return 0
endif
::Super:KeyChar( nKey, nFlags )
/*****
::PostMsg( FM_CHANGE ) */
if ::lHighlight
::PostMsg( FM_HIGHLIGHT )
endif
return nil
Code: Select all
METHOD KeyDown( nKey, nFlags ) CLASS TRichEdit5
if ( nKey == VK_INSERT .and. GetKeyState( VK_SHIFT ) .or. ;
nKey == Asc( "V" ) .and. GetKeyState( VK_CONTROL ) )
if ! ::lReadOnly
::Paste()
::PostMsg( FM_CHANGE )
endif
return 0
endif
if ::lReadOnly
if nKey == VK_BACK .or. nKey == VK_DELETE .or. nKey == VK_RETURN
return 0
endif
endif
::Super:KeyDown( nKey, nFlags )
/*****
::PostMsg( FM_CHANGE ) */
if ::lHighlight
if nKey == VK_DELETE .or. nKey == VK_BACK
::PostMsg( FM_HIGHLIGHT )
endif
endif
return nil
Massimo