您好,欢迎来到[编程问答]网站首页   源码下载   电子书籍   软件下载   专题
当前位置:首页 >> 编程问答 >> Delphi >> cxgrid复制粘贴问题

cxgrid复制粘贴问题

来源:网络整理     时间:2016/8/6 11:44:47     关键词:

关于网友提出的“ cxgrid复制粘贴问题”问题疑问,本网通过在网上对“ cxgrid复制粘贴问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: cxgrid复制粘贴问题
描述:

1.选中cxgrid的某几行记录,如何粘贴到cxgrid?
2.能否将excel的记录粘贴到cxgrid里?


解决方案1:

cxgrid 不自带这么个性的功能,不过自己写也不难 ,用到keydown事件,判断按下ctrl+v  读取剪贴板 就行了,思路就是这,关键在读取剪贴板,那个现成的代码也多,搜一搜呗

解决方案2:

1.cxgrid中没有现成的方法可以拷贝、粘贴。如果要做的话,可以创建一个动态数组,把要拷贝的数据写到数组中,粘贴时,逐行写入
拷贝代码如下:Private中设置selRows:Variant;
procedure TForm1.btn1Click(Sender: TObject);
var
  i,j,SelCount,ColCount: Integer;
begin
  SelCount:=grdView1.Controller.SelectedRowCount;
  ColCount:=grdView1.DataController.ItemCount;
  selRows:=VarArrayCreate([ColCount-1,SelCount-1],varVariant);
  for i :=0  to SelCount-1 do
  begin
    for j := 0 to ColCount-1 do
    begin
      selRows[j,i]:=grdView1.Controller.SelectedRows[i].Values[j];
    end;
  end;
end;
粘贴时反方向写过去,写数据集还是直接写到控件中,看楼主需要。
2.Excel文件的粘贴原理一样,如果是通过Office打开的话,要解析剪贴板很麻烦。变通起来倒也不难,使用Dev的SpreadSheet打开文件,别的操作等同于cxgrid,所不同的是取每个Cell的值,例子中都有详细的描述,好象需要GetCellObject之类的函数,楼主可以到Hlp文件中搜一下,或者找个例子。

解决方案3:

引用 3 楼 kye_jufei 的回复:
Delphi(Pascal) code
3.粘贴
procedure TForm1.cxButton1Click(Sender: TObject);
begin
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), 0, 0);
keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP,0); 
end;

这个不是 Ctrl+C 吗。。。 解决方案4:

1、uses clipbrd;
2、复制
procedure TForm1.cxButton1Click(Sender: TObject);
var
p1,p2:integer;
p3:string;
begin
p1:=cxGrid5DBTableView1.Controller.FocusedRowIndex;
p2:=cxGrid5DBTableView1.Controller.FocusedColumnIndex;
p3:=cxGrid5DBTableView1.DataController.Values[p1,p2];
showmessage(inttostr(p1)+','+inttostr(p2)+','+p3);
clipboard.AsText:=p3;
3.粘贴
procedure TForm1.cxButton1Click(Sender: TObject);
begin
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), 0, 0);
keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), 0, 0);
keybd_event(ord('C'), MapVirtualKey(ord('C'), 0), KEYEVENTF_KEYUP, 0);
keybd_event(VK_Control, MapVirtualKey(VK_Control, 0), KEYEVENTF_KEYUP,0); 
end;

以上介绍了“ cxgrid复制粘贴问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3138641.html

相关图片

相关文章