Solving some problems of the TRichEdit component (Views: 30)
Problem/Question/Abstract: Solving some problems of the TRichEdit component. Answer: Problem 1 ======== If you work with a TRichEdit, you'll find out that it has some problems. In the Delphi help files you'll find a FindText and a ReplaceText procedure as an example. Those procedures work fine on most operating systems, but NOT on Windows 2000! If you set RichEdit1.SelStart and RichEdit1.SelLength, under most operating systems the RichEdit scrolls to the selected text. But not on Windows 2000. There you'll have to add a: SendMessage(EM_SCROLLCARET,0,0); after you made the selection with SelStart and SelLength. Only then the RichEdit under Windows 2000 will scroll to the position of the cursor! Problem 2 ======== If you drop a RichEdit on a form, Delphi (5) doesn't add the richedit.dcu unit to your uses clause. However, if you have included the richedit.dcu unit yourself (manually) to your uses clause, then the following problem occures: In the unit "messages.dcu": EM_SCROLLCARET is defined as: EM_SCROLLCARET = $00B7; In the unit "richedit.dcu": EM_SCROLLCARET is defined as: EM_SCROLLCARET = WM_USER + 49; Because WM_USER is defined as $0400 (in messages.dcu) the value of EM_SCROLLCARET becomes: $400 + 49 (decimal) = 1073 (decimal) after you have added "richedit" to your uses clause. And that is the reason why EM_SCROLLCARET will not work anymore... (At least under W2000. I didn't test it on other operating systems.) A workaround for this problem is to globally add: Const EM_SCROLLCARET = $00B7; to your unit. |