[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]

    {
    > Is it possible to get the position of the cursor (lines and columns)
    > for a memo field. If not, is there a component somewhere that will
    > let me do this.

    I had the same problem with an editor I wrote called TabNotes.  You can get this from:

     http://www.reusable.com

    Anyway, here is how I got the info for a descendant of TMemo called TNotePad:

    {The following two methods are used to get row/column coordinates.     }
    {There are no messages that explicitly provide column information but the}
    {EM_GETSEL message provides the position of the caret if a selection is  }
    {not currently active. When text is selected the caret can be positioned at }
    {the beginning or the end of the selection depending how it was selected.}
    {Thus these methods may be slightly inaccurate while text is selected. }

    function  TNotePad.GetColumn: SmallInt;
    begin
      Result := (SelStart+SelLength) -        {Assume that caret is at end of Selection}
                Perform(EM_LINEINDEX, -1, 0); {Method version of SendMessage}
    end;

    function  TNotePad.GetRow: SmallInt;
    begin
      Result := LongRec(Perform(EM_LINEFROMCHAR, -1, 0)).Lo; {Get Low word}
    end;

[Back to DELPHI SWAG index] [Back to Main SWAG index] [Original]