请问如何将DBGrid中的数据拷贝到剪贴板中?(100分)

  • 主题发起人 主题发起人 Col
  • 开始时间 开始时间
C

Col

Unregistered / Unconfirmed
GUEST, unregistred user!
我现在遇到一个问题,要把DBGrid中选中的数据(可以是一行,也可以是N行)拷贝的剪贴板中
然后通过剪贴板粘贴到Word文档中,怎么办啦?[:)]
 
拷贝到word中,需不需要也是表格样式.
 
直接通过数据库把数据copy到word中不可以吗?
 
如果只是将文本复制还是可以的。
 
遍历DBGrid,使用DbGrid.DataSet.First Next……,行使用DBGrid.Fields.DisplayLabel吧。
如果还要保存到Word中,推荐使用Ole自动化技术,而不是剪贴板。
 
[:)]我的意思是将数据按某一种格式Copy出来,有规律的那种,
而且通过剪贴板还可以以表格的形式放到Word中。
用户可以任意选中DBGrid中的记录,一定要用剪贴板![8D]
最好不用Word作为OLE,因为OLE启动实在太慢了[:(!]
 
以表格的形式——除非了解表格在剪贴板中的存放方式。
 
wk_knife
呵呵,废话
 
那你何不把数据库的内容导入到EXCEL中,搜索搜索,例子很多的
 
浪里白条
嘿嘿,你的主意我正在使用,但是,你有没有发现那速度很慢哦,另外,Microsoft的Query
SQL Server的查询分析器查询出来的结果是可以选中,可以拷贝,可以粘贴到任何文档中,
而且很快,所以将查询结果或者是DBGrid中的数据Copy到剪贴板中是一定可行的[:D]
 
//delphi光盘上有sndkey32单元,copy过来。
uses sndkey32;
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
s: string;
begin
if DBGrid1.SelectedRows.Count>0 then
with DBGrid1.DataSource.DataSet do
for i:=0 to DBGrid1.SelectedRows.Count-1 do
begin
GotoBookmark(pointer(DBGrid1.SelectedRows.Items));
for j := 0 to FieldCount-1 do
begin
if (j>0) then s:=s+', ';
s:=s+Fields[j].AsString;
end;
Memo1.Lines.Add(s);
s:= '';
end;
Memo1.SetFocus;
Memo1.SelectAll;
PostMessage(Memo1.handle,WM_Copy,0,0);
end;
procedure TForm1.Button2Click(Sender: TObject);
var
Handle:THandle;
begin
Handle:=FindWindow('OpusApp',nil);
SetForegroundWindow(handle);
SendKeys('^v',true);
end;
实验成功。
 
后退
顶部