Q&A

  • EditControl에서의 Caret위치 구하는 방법?
Tedit에서 현재 caret의 위치를 구할려면 어떻게 해야 합니까?



예로든다면 "abcd"라는 값이 Tedit.text 에 할당되어 있고

현재 caret의 위치가 c에 있을때의 위치값은 3이 되는데..

3이라는 위치값을 어떤방법으로 얻어내야 해야 됩니까?

1  COMMENTS
  • Profile
    전철호 1999.07.19 18:46
    송기원 께서 말씀하시기를...

    > Tedit에서 현재 caret의 위치를 구할려면 어떻게 해야 합니까?

    >

    > 예로든다면 "abcd"라는 값이 Tedit.text 에 할당되어 있고

    > 현재 caret의 위치가 c에 있을때의 위치값은 3이 되는데..

    > 3이라는 위치값을 어떤방법으로 얻어내야 해야 됩니까?



    제가 만든 에디트 콤포넌트에 있는 일부분입니다.



    다음과 같이 코딩을 하시면 됩니다.

    function TCustomPeEdit.GetPosition : integer;

    var

    Ix, Iy : integer;

    SelStart : integer;

    begin

    Ix := 0;

    Iy := 0;

    SendMessage(Self.Handle,EM_GETSEL,LongInt(@SelStart),0);



    Iy := SendMessage(Self.Handle,EM_LINEFROMCHAR,SelStart,0);

    Ix := (SelStart - SendMessage(Self.Handle,EM_LINEINDEX,IY,0));



    Result := Ix;

    end;