TStringGrid多选的复制与拷贝

uses Clipbrd;
function StringGridSelectText(mStringGrid: TStringGrid): string;
var
  I, J: Integer;
  S: string;
begin
  Result := ‘‘;
  if not Assigned(mStringGrid) then Exit;
  for J := mStringGrid.Selection.Top to mStringGrid.Selection.Bottom do
  begin
    S := ‘‘;
    for I := mStringGrid.Selection.Left to mStringGrid.Selection.Right do
      S := S + #9 + mStringGrid.Cells[I, J];
    Delete(S, 11);
    Result := Result + S + #13#10;
  end;
end{ StringGridSelectText }
procedure StringGridPasteFromClipboard(mStringGrid: TStringGrid);
var
  vTextList: TStringList;
  vLineList: TStringList;
  I, J: Integer;
begin
  vTextList := TStringList.Create;
  vLineList := TStringList.Create;
  vLineList.Delimiter := #9;
  try
    vTextList.Text := Clipboard.AsText;
    for J := 0 to vTextList.Count - 1 do
    begin
      if J + mStringGrid.Row >= mStringGrid.RowCount then Break;
      vLineList.DelimitedText := vTextList[J];
      for I := 0 to vLineList.Count - 1 do
      begin
        if I + mStringGrid.Col >= mStringGrid.ColCount then Break;
        mStringGrid.Cells[I + mStringGrid.Col, J + mStringGrid.Row] := vLineList[I];
      end;
    end;
  finally
    vTextList.Free;
    vLineList.Free;
  end;
end{ StringGridPasteFromClipboard }
procedure StringGridCopyToClipboard(mStringGrid: TStringGrid);
begin
  Clipboard.AsText := StringGridSelectText(mStringGrid);
end{ StringGridCopyToClipboard }
procedure TForm1.MenuItemCopyClick(Sender: TObject);
begin
  StringGridCopyToClipboard(StringGrid1);
end;
procedure TForm1.MenuItemPasteClick(Sender: TObject);
begin
  StringGridPasteFromClipboard(StringGrid1);
end;
procedure TForm1.StringGrid1KeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if ssCtrl in Shift then
    case Key of
      Ord(‘C‘): StringGridCopyToClipboard(TStringGrid(Sender));
      Ord(‘V‘): StringGridPasteFromClipboard(TStringGrid(Sender));
    end;
end;

http://blog.csdn.net/zswang/article/details/111607

时间: 2024-10-24 12:36:12

TStringGrid多选的复制与拷贝的相关文章

详解「复制、拷贝、替身、软连接、硬连接」区别

在mac文件系统中可以对一个文件进行标题中的这5种操作,操作的结果都是生成一份副本,但是其中却有很大区别. 首先操作上的区别很明显 生成 软连接.硬连接 是通过命令行操作的 生成 替身.复制.拷贝 一般是通过finder进行操作的,右键某个文件,菜单中选择(其实复制也可以用命令cp来实现,跟finder操作是一个效果) 然后其中的 复制和拷贝 跟另外三种方式本质上不同,它们之间的区别也很好理解 他们的共同点是生成一份文件的副本,副本和原文件是两个独立的文件,两者的关系只有在生成时是关联的,在生成

C++类对象的复制-拷贝构造函数

在学习这一章内容前我们已经学习过了类的构造函数和析构函数的相关知识,对于普通类型的对象来说,他们之间的复制是很简单的,例如: int a = 10; int b =a; 自己定义的类的对象同样是对象,谁也不能阻止我们用以下的方式进行复制,例如: #include <iostream>  using namespace std;    class Test  {  public:      Test(int temp)      {          p1=temp;      }  prote

Effective C++ .12 复制对象-拷贝构造函数的编写

当我们自己编写拷贝构造函数时,编译器就不会为该类生成默认拷贝构造函数了,对于assignment operator也是如此. 1. 拷贝构造函数中记得调用父类的拷贝构造函数,或者相应复制过程 class Man { private: int age; public: Man(int _age = 0) : age(_age){} }; class Woman : public Man { public: Woman() {} Woman(const Woman& w) : Man(w) {} W

含有对象的数组的复制(拷贝)或者clone

在jquery里,可以通过$extend(dst,src1,src2)来实现对象的合并和复制来生成一个新的对象 但是都是针对{}类型的对象 很多情况下,我们需要对[{},{},{}]类型的对象数组进行复制 一个简单的方法是,先将要复制的对象数组转换成json,然后利用eval变成对象 如下 var src = [{name:'dv'},{sex:'male'},{others:[{a:'a',b:'b'}]}]; //利用JSON.stringify 字符串对象数组 var jsonstr = 

C++复制(拷贝)构造函数详解

本文转载自 http://blog.csdn.net/lwbeyond/article/details/6202256,在此感谢作者 CTemp B(A);       //复制构造函数,C++风格的初始化       CTemp B=A;       //仍然是复制构造函数,不过这种风格只是为了与C兼容,与上面的效果一样       在这之前B不存在,或者说还未构造好. CTemp B;       B = A;                //赋值运算符       在这之前B已经通过默认

JS实现文本全选并复制

项目需要,自己用execCommand()方法写了一个,目前在IE,chrome,fireFox 都正常运行: 话不多说,直接代码: HTML部分 <input class="addresNm" type="text" value="这里是等待被复制的东东" /> <input class="copyBtn" type="button" value="点击复制"/>

使用JavaScript读取所选文本并将其复制到剪贴板

询问大多数开发人员如何将用户选择的内容复制到剪贴板,他们会提到Flash的需求(因此Zeroclipboard等脚本的流行 ).然而,这种想法的调整现在归功于最近浏览器对JavaScript中关键技术的支持的改进,这使得复制到剪贴板本身成为可能.这种JavaScript方法在IE9 +,Firefox 41+和Chrome 42+中得到支持,最终为浏览器本身带来了原生剪切/复制支持.在本教程中,我们将看到如何阅读用户选择的文本内容,动态选择页面上的一些文本,最后但并非最不重要的是,将所选内容复制

VIM快速复制多行

用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴. 这样做:1. 将光标移动到要复制的文本开始的地方,按v进入可视模式.2. 将光标移动到要复制的文本的结束的地方,按y复制.此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式.3. 我移动光标到文本结束的地方,按p粘贴. 一.多行 dd删除一行ndd删除以当前行开始的n行dw删除以当前字符开始的一个字符ndw删除以当前字符开始的n个字符d$.D删除以当前字符开始的一行字符d)删除到下一句的开始d}删除到下一段的开始d回车删除

【转】vim复制与粘贴

用vim写代码时,经常遇到这样的场景,复制多行,然后粘贴. 这样做:1. 将光标移动到要复制的文本开始的地方,按v进入可视模式.2. 将光标移动到要复制的文本的结束的地方,按y复制.此时vim会自动将光标定位到选中文本的开始的地方,并退出可视模式.3. 我移动光标到文本结束的地方,按p粘贴. 一.多行 dd删除一行ndd删除以当前行开始的n行dw删除以当前字符开始的一个字符ndw删除以当前字符开始的n个字符d$.D删除以当前字符开始的一行字符d)删除到下一句的开始d}删除到下一段的开始d回车删除