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