Найти позицию каретки

Previous  Top  Next

    
 

 

Code:

function GetCaretPosition(var APoint: TPoint): Boolean;

var w: HWND;

  aID, mID: DWORD;

begin

  Result:= False;

  w:= GetForegroundWindow;

  if w <> 0 then

  begin

    aID:= GetWindowThreadProcessId(w, nil);

    mID:= GetCurrentThreadid;

    if aID <> mID then

    begin

      if AttachThreadInput(mID, aID, True) then

      begin

        w:= GetFocus;

        if w <> 0 then

        begin

          Result:= GetCaretPos(APoint);

          Windows.ClientToScreen(w, APoint);

        end;

        AttachThreadInput(mID, aID, False);

      end;

    end;

  end;

end;

 

 

//Small demo: set cursor to active caret position

procedure TForm1.Timer1Timer(Sender: TObject);

var

  Pt: TPoint;

begin

  if GetCaretPosition(Pt) then

  begin

    ListBox1.Items.Add(Format('Caret position is %d %d', [Pt.x, Pt.y]));

    SetCursorPos(Pt.X, Pt.Y);

  end;

end;

 

©Drkb::02340

Взято с сайта: http://www.swissdelphicenter.ch