读书人

怎么判断鼠标在richedit中点击了选中文

发布时间: 2012-02-09 18:22:27 作者: rapoo

如何判断鼠标在richedit中点击了选中文本?
在richedit中选中一处文本后,用鼠标点击所选文本,如何判断鼠标是点在选中文本上还是选中文本之外?
我已知道如何获取当前鼠标在richedit中的位置,但不知该如何取得所选文本在屏幕上的矩形范围是多少?

[解决办法]
//。。。。。
private
{ Private declarations }
FSelText: string;
//。。。。。

//看看运行效果是不是你需要的先
procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if (RichEdit1.SelLength = 0) and (FSelText <> ' ') then
Caption := FSelText
else Caption := 'no select ';
end;

procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FSelText := RichEdit1.SelText;
end;
[解决办法]
type
TForm1 = class(TForm)
RichEdit1: TRichEdit;
PopupMenu1: TPopupMenu;
Copy1: TMenuItem;
Cut1: TMenuItem;
N1: TMenuItem;
Paste1: TMenuItem;
procedure RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure RichEdit1SelectionChange(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Copy1Click(Sender: TObject);
procedure Paste1Click(Sender: TObject);
procedure Cut1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.RichEdit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if ssRight in Shift then
PopupMenu1.Popup(Mouse.CursorPos.X, Mouse.CursorPos.Y);
end;

procedure TForm1.RichEdit1SelectionChange(Sender: TObject);
begin
Copy1.Enabled := Boolean(RichEdit1.SelLength);
Cut1.Enabled := Boolean(RichEdit1.SelLength);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
Copy1.Caption := 'Copy ';
Cut1.Caption := 'Cut ';
N1.Caption := '- ';
Paste1.Caption := 'Paste ';
Copy1.Enabled := false;
Cut1.Enabled := false;
end;

procedure TForm1.Copy1Click(Sender: TObject);
begin
RichEdit1.CopyToClipboard;
end;

procedure TForm1.Cut1Click(Sender: TObject);
begin
RichEdit1.CutToClipboard;
end;

procedure TForm1.Paste1Click(Sender: TObject);
begin
RichEdit1.PasteFromClipboard;
end;

end.

读书人网 >.NET

热点推荐