2

谁能帮助我根据用户键入的最后一个字符在备忘录中显示(或创建)定位(X,Y)的表单?即,每当用户在备忘录中键入 % 字符时,我都需要显示一个表单,但需要将该表单紧邻并位于该字符下方。我正在使用这段代码:

procedure TForm1.memo1KeyPress(Sender: TObject; var Key: Char);
if key = #37 then
begin
  form2.Top:=Mouse.CursorPos.Y;
form2.left:=Mouse.CursorPos.X;
form2.Show;
end;
end;

但此代码仅显示基于光标位置的表单。有没有办法在用户输入 % 字符的右侧和下方显示和定位表单?

4

1 回答 1

3

你需要得到插入符号的位置,而不是鼠标的位置..

试试这个

procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char);
var
  clientPos: TPoint;
begin
if key = #37 then

begin
    GetCaretPos(clientPos);
    clientPos:=Memo1.ClientToScreen(clientPos);
    with form2 do
    begin
      Top  := clientPos.Y + 4;
      Left := clientPos.X;
      Visible := true;
    end;
end

end;
于 2013-05-28T02:02:18.400 回答