本文整理自网络,侵删。
var gStart, gLength, gCol: Integer;
procedure SetRichEdit(aRichEdit: TRichEdit);var fRow, fCol: Integer; fStart, fLength, tStart: Integer;begin fRow := aRichEdit.CaretPos.X; fCol := aRichEdit.CaretPos.Y; if gCol = fCol then Exit; if aRichEdit.SelLength > 0 then Exit; tStart := aRichEdit.SelStart; fStart := tStart - fRow; fLength := aRichEdit.Lines[fCol].Length; aRichEdit.Lines.BeginUpdate;
if fLength > 0 then begin aRichEdit.SelStart := fStart; aRichEdit.SelLength := fLength; aRichEdit.SelAttributes.Color := clRed; end;
if gLength > 0 then begin aRichEdit.SelStart := gStart; aRichEdit.SelLength := gLength; // aRichEdit.SelectAll; aRichEdit.SelAttributes.Color := clBlack; end; aRichEdit.SelStart := tStart; aRichEdit.SelLength := 0; aRichEdit.Lines.EndUpdate; gStart := fStart; gLength := fLength; gCol := fCol;end;
procedure TForm1.RichEdit1Click(Sender: TObject);begin SetRichEdit(TRichEdit(Sender));end;
procedure TForm1.RichEdit1KeyUp(Sender: TObject; var Key: Word; Shift: TShiftState);begin if Key in [37 .. 40] then SetRichEdit(TRichEdit(Sender));end;
相关阅读 >>
Delphi tms web core messagedlg对话框用法
Delphi源码webbrowser多次执行documentcomplete
用Delphi通过setupapi.dll列举和停用硬件设备
更多相关阅读请进入《Delphi》频道 >>