我有一个编辑,当用户右键单击文本时,我需要设置 edit.selstart 位置。
edit.mousedown 似乎没有设置它,但 edit.click 却设置了。
因此,如果用户左键单击文本然后右键单击,则 selstart 是正确的,但如果他们没有左键单击,则首先 selstart 为 0。
在 edit.MouseDown 事件中有什么方法可以模拟 edit.click 吗?
试试这个,对我有用:
uses
..., Windows;
procedure TForm1.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.SelStart := LOWORD(Edit1.Perform(EM_CHARFROMPOS, 0, MAKELPARAM(X, Y)));
end;