在DBGrid中实现Copy、Paste功能

喵小奇2015

喵小奇2015

2016-02-19 12:35

下面,图老师小编带您去了解一下在DBGrid中实现Copy、Paste功能,生活就是不断的发现新事物,get新技能~
   Copy和Paste加速按钮,对于使用Windows下编辑器的人来说,恐怕都是非常熟悉而且不可缺少的。Delphi中的有些控件,如:TDBEdit、TDBImage、TDBMemo、TEdit等,具有CutToClipboard、CopyToClipboard和PasteFromClipboard方法,在这些控件上,利用这几个方法,只要通过简单的编程,就可以实现上述加速按钮。但TDBGrid控件却不提供上述方法,无法直接实现这几种功能。而在单机的数据库应用程序中,TDBGrid却经常被用来进行数据(包括数字和文字)的输入,没有Copy和Paste功能,使用起来深感不便。笔者在编程过程中,利用中间控件进行“过渡”,间接地实现了这几种功能。
  
  主要思路:既然TDBGrid控件无法直接实现Copy和Paste编辑功能,则可以将TDBGrid控件中需要进行这几种编辑的字段(Field)的内容,转移到具备这几种功能的控件(以TDBEdit为例)中去,编辑完毕后,再传回到TDBGrid中。
  
  具体方法:在已设计好的包含有TDBGrid控件(设名为DBGrid1)的窗体中,增加一个TDBEdit(设名为DBEdit1)控件,其DataSources属性设为与DBGrid1的DataSources属性相同,对DBGrid1控件的OnColEnter事件编程,使DBEdit1的DataField属性值等于DBGrid1控件的被选择字段的字段名。再在窗体中增加两个快速按钮:Copy和Paste,图形可选Delphi子目录下ImagesιButtons子目录里的Copy.bmp和Paste.bmp。对Copy快速按钮的OnClick事件编程:
  DBEdit1.CopyToClipboard;
  
  对Paste快速按钮的OnClick事件编程:
  DBEdit1.PasteFromClipboard;
  DBGrid1.SelectedField.AsString:=DBEdit1.Text;
  
  此时,假如DBGrid1中的某一单元Cell数字需要粘贴另一单元Cell2的部分或全部内容,用鼠标单击选择Cell2,此时DBEdit1所显示的内容与Cell2的内容相同。在DBEdit1中用鼠标拖曳选择部分或全部内容,单击Copy快速按钮;再用鼠标单击选择Cell,此时DBEdit1所显示的内容与Cell相同,在DBEdit中欲粘贴刚才所选内容的位置插入光标,单击Paste快速按钮,则刚才所选内容插入到光标位置,Cell的内容也随之改变成插入后的内容,由此完成了一次Copy—Paste操作。
  
  用这种方法实现Copy—Paste操作,比正常的操作多了一次鼠标的键击、两次鼠标的移动。在重复输入的内容不多,且操作者键盘输入很快很熟练的情况下,这种实现Copy—Paste的方法,意义似乎不大。但假如应用程序的使用者是那些并没有把握某种快速的方法的,copy—Paste方法本来就不熟练(则感觉不到这种方法的不合常规),且又非常地善于在一长串的同音字里翻来翻去地寻找的话,这还是一种不错的方法。假如哪位读者有能在TDBGrid中实现常规Copy—Paste操作的方法,请不吝赐教。
  
  以下是有关的程序代码:
  procedure TUnitDetail.DBGrid1ColEnter(Sender:TObject);
  begin
  case DBGrid1.SelectedIndex of
  0:DBEdit1.DataField:=Unit?Num;
    1:DBEdit1.DataField:=UnitName;
  2:DBEdit1.DataField:=Header;
  3:DBEdit1.DataField:=Address;
  4:DBEdit1.DataField:=Tel;
  end;
  end;
  
  
  procedure TUnitDetail.SBCopyClick(Sender:TObject);
  begin
  DBEdit1.CopyToClipboard;
  end;
  
  procedureTUnitDetail.SBPasteClick(Sender:TObject);
  begin
  DBEdit1.PasteFromClipboard;
  DBGrid1.SelectedField.AsString:=DBEdit1.text;
  end;
展开更多 50%)
分享

猜你喜欢

在DBGrid中实现Copy、Paste功能

编程语言 网络编程
在DBGrid中实现Copy、Paste功能

在WORD中实现WPS的功能

办公软件
在WORD中实现WPS的功能

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

Delphi中实现DBGrid列宽度自动调整

编程语言 网络编程
Delphi中实现DBGrid列宽度自动调整

在AutoCAD中实现“倾斜”功能教程

autocad教程
在AutoCAD中实现“倾斜”功能教程

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

如何在DBGRID或者STRINGGRID中实现用滚轮进行翻页的功能就象浏

编程语言 网络编程
如何在DBGRID或者STRINGGRID中实现用滚轮进行翻页的功能就象浏

在Delphi的DBGrid中插入其他可视组件

编程语言 网络编程
在Delphi的DBGrid中插入其他可视组件

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

Socket的地址结构

Socket的地址结构

html5-websocket基于远程方法调用的数据交互实现

html5-websocket基于远程方法调用的数据交互实现
下拉加载更多内容 ↓