Cursor Jump in Memo Field

Discussion of open issues, suggestions and bugs regarding usage of dbExpress drivers for InterBase & Firebird in Delphi and C++Builder
Post Reply
RedOctober2013
Posts: 9
Joined: Thu 02 May 2013 22:52

Cursor Jump in Memo Field

Post by RedOctober2013 » Thu 31 Jul 2014 16:56

Dev Platform: Delphi XE3, Windows 2008 Server, Firebird 2.x, IBC, dbExp, BDE
Target Platform: Windows 2008 Server, same DB

Problem Environment:

-Connected to a database table that has a BLOB SUB_TYPE 1 field (Text, Memo field)
-The TDataSource is set to "Autoedit = True"
-The memo field, displayed in a TDBMemo control, contains data, about a paragraph of text

Problem manifestation:

When the user wants to edit text in the TDBMemo control, that is somewhere in the middle or end of the existing text, the user clicks in the middle or end of the text, and types a character.

Instead of the cursor remaining at the clicked position, the cursor jumps to the beginning (top left) of the text control, and the character appears at the very beginning of the text, instead of in the middle of the text, or at the end of the text,where the user clicked initially. This problem is intermittent. It occurs about 90% of the time, not every time.

The only way I have found to get around this behavior is to cause the TClientDataSet to be put into Edit mode, when the user's cursor traverses over the TDBMemo field. (OnMouseMove)

I am reporting this issue to DevArt because as far as I have tested, this behavior occurs only in DevArt products, not in the primitive BDE connection that comes with Delphi. The BDE/ODBC connection behaves correctly 100% of the time. This problem did not occur in Delphi 7, using DevArt product. A possibly related issue, is that I noticed that IBC (and possibley dbExp), when doing a GetText, reads in the End Of Record character from the BLOB field, whereas that did not used to happen in earlier versions of DevArt. In some cases, if I am concatenating the contents of several BLOB fields, I have to write an OnGetText that simply Trim() 's the read content, so as to get rid of the EOR character, otherwise, it will prevent concatenation.

I have built a demo project that demonstrates this behavior. Please let me know where I can submit it for your review.

PavloP
Devart Team
Posts: 149
Joined: Fri 24 Jan 2014 12:33

Re: Cursor Jump in Memo Field

Post by PavloP » Fri 01 Aug 2014 12:46

Please send your sample to pavelp*devart*com.

Post Reply