关于网友提出的“ 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:
这个不是 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