在C++Builder中实现拖放功能.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
在CBuilder中实现拖放功能

在C++ Builder中实现拖放功能?Windows中的拖放功能大家一定很熟悉了,如文件的转移,拷贝等操作用鼠标轻轻一拖即可,在编写程序中有时也用到拖放,那么如何实现呢?现以C++ Builder5(简称CB5)为例,分析拖放功能的具体实现。 一.工具条的拖放 ---- 要实现拖放功能,首先必须了解几个与拖放有关的属性和方法, 对于TControl控件,CB5提供了三个属性,DockSite,DragKind和DragMode。灵活运用这三个属性会得到意想不到的效果。这三个属性的意义是: ---- DockSite:指定当前控件是否接受Drag-and-Dock类型的操作 ---- DragKind:拖放种类,分为dkDrag和dkDock两种 ---- DragMode:拖放模式,分为自动和手动模式两种 ---- 其中Dock操作是指某控件脱离它的Parent,转而成为另一个控件的Child,也就是两个控件合并。若某一控件的DockSite为True,表明它接受执行Dock操作的某控件,并成为它的Parent。 ---- 著名的Office工具条可以随意拖放,其实实现起来很简单:在Form上放一CoolBar控件,再在CoolBar控件上随意放几个ToolBar控件,它们的属性设置代码如下: CoolBar1.DockSite=true; ToolBar1.DragKind=dkDock; ToolBar1.DragMode= dmAutomatic; ---- 其它ToolBar的属性设置与ToolBar1的属性设置相同,编译运行程序,拖动工具条试试,Cool极了吧。 二、任何两上控件间的拖放 ---- 与此操作有关的几个函数有: ---- BeginDrag:开始执行拖放操作,如果控件的DragMode为dmManual,则必须调用此函数,如果DragMode为dmAutomatic,则不用调用。 ---- OnDragOver:当被拖放的对象经过此控件时触发此事件,其中的参数Accept表示是否接受拖放的对象。 ---- OnDragDrop:当放下被拖放的对象时触发此事件。 ---- 下面举例说明拖放的实现过程: ---- 在CB5中新建一工程,在Form1上放两个ListBox,分别命名为ListBox1,ListBox2,打开ListBox1的Items属性框,随便输入几行字符串。 ---- 其属性设置如下: ListBox1-MultiSelect=true;??// MultiSelect属性设为true,表示可以多选 ListBox1-DragMode= dmAutomatic; ListBox2-MultiSelect=true; ListBox2-DragMode= dmAutomatic; //两个ListBox拖放事件相同,可以互相拖放 ListBox2-OnDragOver= ListBox1DragOver; ListBox2-OnDragDrop= ListBox1DragDrop; ListBox2-OnStartDrag= ListBox1StartDrag; 在头文件中设置两个int型变量CurIndex,NewIndex 程序代码如下: //----------------------------------------------------------- #include vcl.h #pragma hdrstop #include unit1.h #include FileCtrl.hpp //----------------------------------------------------------- #pragma package(smart_init) #pragma resource *.dfm TForm1 *Form1; //---------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) ????????: TForm(Owner) { } //---------------------------------------------------------- void __fastcall TForm1::ListBox1StartDrag(TObject *Sender,???TDragObject *DragObject) { ??????//开始执行拖放事件时记录ListBox-ItemIndex; ??????CurIndex=((TListBox *)Sender)-ItemIndex; } //-

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档