Delphi 2010 - 在备忘录自选文本中显示表单

标签 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;

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

最佳答案

您需要获取插入符位置,而不是鼠标位置..

试试这个

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;

关于Delphi 2010 - 在备忘录自选文本中显示表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16782736/

相关文章:

Delphi OpenDialog文件名显示问题

delphi - 在Windows Vista 64位环境下从命令行使用Delphi 2009进行编译

delphi - JVCL 2.10 和德尔福 2010

java - 查找与 DLL 中的偏移量匹配的 Delphi 源代码行

windows - 关于 JvPatchFile 组件?

delphi - 在 Delphi 中禁用溢出检查

sql - Delphi中从sql server表动态创建弹出菜单树

ios - Delphi 在链接后从编译文件夹中删除 iOS64 二进制文件

delphi - Shell 函数的失败返回值

delphi - 如何在不关闭菜单的情况下选择菜单项?