var i,j: Integer;for i := 0 to memo1.lines.count - 1 do begin j := j + Length(memo1.lines[i]); if Memo1.SelStart <= j then break; end; //从j或者j - 1 行开始选择,同样道理,用Memo1.SelStart + Memo1.SelLength来判断 选择结束的行,然后自己计算选中的行数。
var startline,endline:Integer; begin startline := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0); Edit1.Text := IntToStr(startline); endline := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart+Memo1.SelLength,0); Edit2.Text := IntToStr(endline); end;
可以使用Memo的属性CaretPos.X来取行鼠标所在行的行数与鼠标所在行的第几位Memo.CaretPos.X 光标或鼠标所在行的列号(第几位),从0开始计数 Memo.CaretPos.Y 光标或鼠标所在行的行号(位于Memo的第几行),从0开始计数//获取Memo中用鼠标选择部分的总行数与所选行文本 var iLentgh:Integer; //鼠标选择部分的总行数 str:string; //鼠标所在或所选行的文本 begin str:=Memo.Lines.String[Memo.CaretPos.Y iLength:=Length(str); end;
Memo.CaretPos.X 光标或鼠标所在行的列号(第几位),从0开始计数 Memo.CaretPos.Y 光标或鼠标所在行的行号(位于Memo的第几行),从0开始计数 //获取Memo中用鼠标选择部分的总行数与所选行文本 var iLentgh:Integer; //鼠标选择部分的总行数 str:string; //鼠标所在或所选行的文本 begin str:=Memo.Lines.String[Memo.CaretPos.Y iLength:=Length(str); end;
begin
j := j + Length(memo1.lines[i]);
if Memo1.SelStart <= j then break;
end; //从j或者j - 1 行开始选择,同样道理,用Memo1.SelStart + Memo1.SelLength来判断
选择结束的行,然后自己计算选中的行数。
var
startline,endline:Integer;
begin
startline := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
Edit1.Text := IntToStr(startline);
endline := SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart+Memo1.SelLength,0);
Edit2.Text := IntToStr(endline);
end;
Memo.CaretPos.Y 光标或鼠标所在行的行号(位于Memo的第几行),从0开始计数//获取Memo中用鼠标选择部分的总行数与所选行文本
var
iLentgh:Integer; //鼠标选择部分的总行数
str:string; //鼠标所在或所选行的文本
begin
str:=Memo.Lines.String[Memo.CaretPos.Y
iLength:=Length(str);
end;
Memo.CaretPos.Y 光标或鼠标所在行的行号(位于Memo的第几行),从0开始计数 //获取Memo中用鼠标选择部分的总行数与所选行文本
var
iLentgh:Integer; //鼠标选择部分的总行数
str:string; //鼠标所在或所选行的文本
begin
str:=Memo.Lines.String[Memo.CaretPos.Y
iLength:=Length(str);
end;
//少了一个']'
str:=Memo.Lines.String[Memo.CaretPos.Y]