delphi 高亮选中MEMO某一行  
官方Delphi 学习QQ群: 682628230(三千人)
频道

delphi 高亮选中MEMO某一行


选中第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); var LineNumber:integer; begin SelectMemoAtLine(Memo1, 1); end;


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.070000171661377 seconds