Delphi 2010 - 在备忘录中显示表格

时间:2013-05-28 01:54:14

标签: delphi

任何人都可以帮我根据用户输入的最后一个字符在备忘录中显示(或创建)位于(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;

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

1 个答案:

答案 0 :(得分: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;