本文整理自网络,侵删。

选中第5行
//转到指定行并选中这行的文本
procedure SelectLine(Memo1: TMemo; ln: Integer);
begin
Memo1.SelStart := SendMessage(Memo1.Handle, EM_LINEINDEX, ln - 1, 0);
Memo1.SelLength := Length(Memo1.Lines[ln - 1]);
end;
//将滚动条定位到指定行procedure ScrollToLine(Memo1: TMemo; ln: Integer);begin SendMessage(Memo1.Handle, EM_LINESCROLL, 0, -Memo1.Lines.Count); SendMessage(Memo1.Handle, EM_LINESCROLL, SendMessage(Memo1.Handle, EM_LINESCROLL, 0, ln - 1);end; procedure TForm1.Button1Click(Sender: TObject);begin SelectLine(Memo1,15); ScrollToLine(Memo1,15); //将水平的滚动条滚到最左边 SendMessage(Memo1.Handle, WM_HSCROLL, SB_LEFT, 0); end;
//这段代码也是高亮指定行 方法1
Procedure SelectMemoLine(Memo : TCustomMemo) ;Var LineNumber : Integer;Begin LineNumber := Memo.Perform(EM_LINEFROMCHAR, Memo.SelStart, 0); Memo.SelStart := Memo.Perform(EM_LINEINDEX, LineNumber, 0); Memo.SelLength := Length(Memo.Lines[LineNumber]) ; Memo.SetFocus;End;procedure TForm2.Button1Click(Sender: TObject);begin Memo1.SetFocus; Memo1.SelStart := SendMessage(Memo1.Handle, EM_LINEINDEX, 1, 0); //1为第二行 SelectMemoLine(Memo1);end;
//改进方法2:
Procedure SelectMemoAtLine(Memo : TCustomMemo; LineNumber : Integer) ;Begin Memo.SetFocus; Memo.SelStart := SendMessage(Memo.Handle, EM_LINEINDEX, LineNumber, 0); Memo.SelLength := Length(Memo.Lines[LineNumber]);End;procedure TForm2.Button1Click(Sender: TObject);varLineNumber:integer;begin SelectMemoAtLine(Memo1, 1);end;
相关阅读 >>
Delphi 用idhttp打开网页或下载文件时如何显示进度
Delphi xe 无法编译apk提示sdk路径问题时?sdk路径配置方法
更多相关阅读请进入《Delphi》频道 >>