任何人都可以帮我根据用户输入的最后一个字符在备忘录中显示(或创建)位于(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;
但是此代码仅显示基于光标位置的表单。有没有办法在用户输入%字符的右侧和下方显示和定位表单?
答案 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;