用户名:  密码:   
您当前的位置:首页 > 程序设计 >  Delphi > 

Memo1

上次修改时间: 2024-06-13 11:51:29      来源:网络总结      作者:钢铁长陈
上一页      路径:DSD\Learn\Delphi语言\常用控件使用说明\      下一页

 1. 输出Tstringlist列表内容
 Memo1.Lines:=FileNameList;
将memo内容赋给Tstringlist
 list.Assign(Memo1.Lines); //最好放在try...finally...end中
更多关于的TstringList见D:\SynologyDrive\Learn\Delphi语言\D7Pro\TStringList与OleVariant类型用法例子\Unit1.pas
 
保存memo到文件
Memo1.Lines.SaveToFile('C:\Users\tieguo\AppData\Roaming\cmzs\openstr.txt'); 

读入文件到memo
Memo1.Lines.LoadFromFile('C:\Users\tieguo\AppData\Roaming\cmzs\openstr.txt');

获取选择文本与指定行文本
Memo1.seltext Memo1.Lines[i])

获取总行数与光标所在行
Memo1.Lines.Count;  Memo1.CaretPos.Y;

设置光标所在行
Memo1.CaretPos:=ss; //var ss:TPoint; 要先设置ss.x和ss.y的值才能赋给caretpos

获取选择内容的开始与结束行,SNum为longint
SNum:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
ENum:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart+Memo1.SelLength,0);

通过行号获取该行第一个字符编号与最好一个字符编号,****这里有些问题未解决
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, 3, 0); //获取第3行第一个字符编号
Memo1.SelLength := Memo1.Perform(EM_LINEINDEX, 3+1, 0)-Memo1.Perform(EM_LINEINDEX, 3, 0); //获取第三行的长度

选择第5到8行的内容
Memo1.SelStart := Memo1.Perform(EM_LINEINDEX, 5, 0); //获取第5行开始编号
Memo1.SelLength := Memo1.Perform(EM_LINEINDEX, 9, 0) - Memo1.SelStart;  //获取第8+1行开始编号-第5行开始编号就是选择的长度

获取当前行与列
Num:=SendMessage(Memo1.Handle,EM_LINEFROMCHAR,Memo1.SelStart,0);
CharsLine:=SendMessage(Memo1.Handle,EM_LINEINDEX,Num,0);//获取指定行num起始位置的索引
Hang:=Num+1;//当前行
Lie:=(Memo1.SelStart-CharsLine)+1;//当前列

删除当前行与在当前行插入字符
Memo1.Lines.Delete(Memo1.CaretPos.Y)
Memo1.Lines.Insert(Memo1.CaretPos.Y,'aaaaa');

Memo1.Lines.Append('aaaaa'); //在最后加入一行
Memo1.Lines.Insert(0,'aaaa'); ;//在最顶部插入一行

按C+A全选,在 Memo 控件的 onKeyDown 事件中添加相应的代码
  if (Key = Ord('A')) and (ssCtrl in Shift) then
  begin
    mmo1.SelectAll; // 选中 Memo 中的所有文本
    Key := 0; //将Key设为0,阻止 Memo继续处理按键
  end;

复制选择内容到剪切板,同Ctrl+C
  if Memo1.SelLength > 0 then  Clipboard.AsText := Memo1.SelText;

Memo作函数或过程的参数
***注:给函数加入memo作函数后,接口部分的声明却没有加出错,接口部分参数要同步加入
procedure PostComputerData(memo:TMemo);
begin
memo.Lines.add('aaa');
end

if Memo.Lines[i] = '' then //判断是否是空白行

只使用memo功能,不在窗体上显示控件
type
    Memo3: TMemo;
procedure TForm3.Button1Click(Sender: TObject);
var
  memo:TMemo;
begin
try
  memo:=TMemo.Create(nil);
  Memo.Parent := Form1;  //不显示控件也要指定父窗口,否则无法使用
  Memo.Lines.LoadFromFile(path);
finally
 Memo.Free;
end;
end;