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);varLineNumber:integer;begin SelectMemoAtLine(Memo1, 1);end;

相关阅读 >>

Delphi 强迫将半型英数字转换成全型英数字

Delphi获取两个字符之间的数

Delphi firemonkey的屏幕分辨率hdpi、mdpi、ldpi的差别

Delphi 捕捉异常:try..except..end

Delphi 判断特定字符是为单字节还是双字节

Delphi中使用tthread类实现多线程

Delphi keydown与keyup、keypress的区别

Delphi通过idsmtp发送邮件的简单代码

Delphi topendialog设置多个过滤条件

Delphi fdquery遍历输出 json

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...