• 网络学院
  • 新手学堂
  • 操作系统
  • 网络技术
  • 软件应用
  • 办公软件
  • 编程技术
  • 网站架设
  • 数据库类
  • 平面设计
  • 多媒体类
  • 游戏资讯
  • 教学论文
  • 认证考试
delphi实例编程之--制作可随处拖放的工具栏
广告位
  站点:
  • 首 页
  • 最新软件
  • 最新文章
  • 国内软件
  • 国外软件
  • 汉化软件
  • 源码下载
  • 字体下载
delphi实例编程之--制作可随处拖放的工具栏
软件发布 delphi实例编程之--制作可随处拖放的工具栏
网络软件 系统工具 应用软件 联络聊天 图形图像 多媒体类 行业软件 游戏娱乐 编程开发 安全相关 教育教学 数码软件
热门软件: QQ 瑞星 pplive e话通 木马克星 千千静听 office2000 五笔字根 Photoshop 视频分割
返回首页 | 文章首页 | 编程技术 | Delphi教程 | delphi实例编程之--制作可随处拖放的工具栏

delphi实例编程之--制作可随处拖放的工具栏

 

添加时间: 2006-2-28 9:01:01  作者: Delphi教程  阅读次数:538   来源: http://www.d9soft.com

 

 

       

  在我们经常使用的软件,比如photoshop,office,delphi等等,我们经常可以对工具栏进行拖拽操作----将相关的工具栏拖拉出来,形成独立的小窗口;或者将几个工具栏进行互相的组合!(这些就是我们常说的DOCK功能),效果如下图:



DELPHI的工具栏

  其实,利用DELPHI或是其它的可视化编程工具(如c++ builder等)很容易实现上面的功能!下面,我们通过一个小例子来看看它是如何实现的,这里使用的编程工具为Delphi!

  开始实例前,先要说明些东东!(讲些废话先^_^)

  可视化的VCL元件皆支持DOCK功能!
  在delphi中,所有继承自Tcontrol及TWinControl的VCL元件,都支持dock功能。

  基本上,要进行dock动作至少需要两个元件,一个是被附着的dock site元件,另一个是附着在dock site的元件。DELPHI所提供的可视化元件中只有继承自TWinControl的VCL元件才具有dock site的功能,而只要是继承自Tcontrol的VCL元件则都具有附着在dock site的功能。

  * 如果你希望某个继承自TWinControl的元件具有dock site的功能,只要把该元件的属性DockSite设成true即可;
  * 若是要把某个继承自TControl的元件附着在dock site上,只要把属性Drag kind设成dkDock、属性DragMode设成dmAutomatic即可,

  当程序执行后,你就可以利用鼠标把后者元件拖拉到前者元件上,进行dock动作。至于dock的实际动作都被封装在元件内,用户根本不用管这些动作是如何进行的。

马上开始我们的实例!

  新建一个普通的工程(project1),从win32控件页中拖拉一个CoolBar,一个ToolBar,一个ImageList到form1窗体中,属性设置如下:

Form1

 .Caption: 实例一DOCK功能的实现;

 

 

CoolBar1(被附着的dock site元件)

 .AutoSize: true;
 .DockSite: true; 
为了一些更好的效果,你可以对BorderWidth,EdgeBorders,EdgeInner, EdgeOuter,进行相关的设置!


ToolBar1(附着在dock site的元件)
在ToolBar1元件上点击右键,选择New Button,新建一些按钮,它们之间可以通过New Separator,进行相关组的分隔!

 .Caption:  工具栏(独立出来时窗口显示的标题)
 .AutoSize: true;
 .DockKind: dkDock;
 .DragMode: dmAutomatic;
 .Flat:  ture;(这样好看些)
 .Images: ImageList1;  
同样为了一些更好的效果,你可以对BorderWidth,EdgeBorders,EdgeInner, EdgeOuter,进行相关的设置!

 

ImageList1,
双击该控件,选择Add…,添加几幅图片。这样,可以很方便地将这些图片赋于ToolBar中的Button!

 



  点击运行按钮,你拖拽下你的工具栏,是不是马上就可以看到效果啦?我们还没有编写一行代码呢????这就是Delphi的强大之处!

  为了更好地进行拖拽操作,我们添加下面几行代码!(主要是CoolBar1的onDragOver、onDockDrop和UnDock事件);源程序如下(很短,不要以为我偷懒)!(打包下载源文件与执行程序)

unit sample1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ImgList, ComCtrls, ToolWin;

type
TForm1 = class(TForm)
ImageList1: TImageList;
CoolBar1: TCoolBar;
ToolBar1: TToolBar;
ToolButton1: TToolButton;
ToolButton2: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
ToolButton5: TToolButton;
ToolButton6: TToolButton;
ToolButton7: TToolButton;
procedure CoolBar1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
procedure CoolBar1DockDrop(Sender: TObject; Source: TDragDockObject; X,
Y: Integer);
procedure CoolBar1UnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
procedure ToolButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.CoolBar1DragOver(Sender, Source: TObject; X, Y: Integer;
State: TDragState; var Accept: Boolean);
begin
Accept:=(source=ToolBar1); //指定接受拖拽操作的条件是拖拽对象为ToolBar1;
end;

procedure TForm1.CoolBar1DockDrop(Sender: TObject; Source: TDragDockObject;
X, Y: Integer);
begin
ToolBar1.AutoSize:=false; //当元件拖到dock site元件上面,并且放开鼠标左键之后,此事件就会被执行
ToolBar1.Align:=altop; //为了便于拖拽,将toolbar1的宽度与coolbar1相近.
ToolBar1.Width:=CoolBar1.Width-1;
end;

procedure TForm1.CoolBar1UnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
ToolBar1.AutoSize:=true; //当元件一拖离dock site元件时,此事就会被执行
ToolBar1.Caption:='工具栏'; //设定独立工具栏窗口的大小和标题
end;

procedure TForm1.ToolButton1Click(Sender: TObject);
begin
Close; //退出程序
end;

end.

下面列出与DOCK功能有关的事件:

OnDragDrop: 当元件被拖动时,此事件被执行;
OnDragOver: 用于指定元件可以被拖动的条件;
OnDockDrop: 当元件拖到dock site元件上面,并且放开鼠标左键之后,此事件就会被执行;
OnDockOver:当元件一拖到dock site元件上,此事件就会被执行;
OnUnDock:当元件一拖离dock site元件时,此事就会被执行;
OnGetSiteInfo:取得dock site元件的一些信息。

  好了,通过一个小小的拖放工具栏的例子,我们马上就可以体会到Delphi的易用与强大之处!以后我会继续写一些关于用Delphi进行实例编程的文章!各位Delphi爱好者,大家将Delphi进行到底吧!小生水平有限,如有不对之处,请各位网友指出!谢谢! aatun@163.net

 

 

 

 

上下文章:

 

上一篇文章: 关于VisiBroker For Delphi的使用(1) 下一篇文章: Delphi的两个实用技巧(2)巧用Windows的API函数

相关文章:

  • 用Painter制作手绘风格女孩教程
  • Oracle专家高级编程学习笔记[1]
  • Oracle专家高级编程学习笔记[2]
  • oraclestatspack实例
  • 实例:Oracle导出htm文件

相关软件:

  • 多媒体课件制作快手 8.6.27
  • 影楼电子相册制作系统 2008 V7.0 个人版
  • 影楼电子相册制作系统 2008 V7.0 白金版
  • 名片制作专家 V6.2.10
  • ShellBrowser For C++ & Delphi V5.14
  • 影楼电子相册制作系统 2008 V6.8 家庭版

 

 

快速导航

  • 网络学院
  • 精品汇聚
  • 字体下载
  • 教程下载
  • ASP源码
  • PHP源码
  • Net源码
  • JSP 源码

编程技术分类导航

  • ASP & ASP.NET教程
  • PHP教程
  • JSP教程
  • C/C++教程
  • VB & VB.NET教程
  • VC教程
  • Delphi教程
  • BCB教程
  • VFP教程
  • PB教程
  • JAVA教程
  • XML教程
  • C#教程
  • CGI教程

本类经典文章推荐

  • Delphi的两个实用技巧(1)播放Flash
  • Delphi的两个实用技巧(2)巧用Wind...
  • delphi实例编程之--制作可随处拖放...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 关于VisiBroker For Delphi的使用...
  • 在线播放器DIY
  • Delphi让你发送Flash电子邮件
  • 在窗口标题区添加按钮
  • 用Delphi 6编程实现自动标注汉语拼...

Delphi教程阅读排行

  • Delphi7从入门到精通之历数Delphi...
  • Delphi的两个实用技巧(1)播放Flash
  • Delphi7从入门到精通之认识Delphi...
  • delphi实例编程之--制作可随处拖放...
  • Delphi控件,我们也可以(1)
  • Delphi的两个实用技巧(2)巧用Wind...
  • 在线播放器DIY
  • Delphi控件,我们也可以(2)
  • 用Delphi + DirectX开发简单RPG游...
  • 用Delphi 6编程实现自动标注汉语拼...

编程技术阅读总排行

  • VB入门教程之一
  • 第二章 PowerBuilder 入门之创建新...
  • Java连接数据库实例
  • 第一章 什么是PowerBuilder
  • VC++之List Box/Check List Box控...
  • VC++ List Ctrl控件
  • VC++ Combo Box/Combo Box Ex控件
  • 学C++不得不看的一篇文章
  • VB入门教程之二
  • VC++之Button控件

广告位置

字母检索 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 回到顶部

关于我们 | 版权声明 | 免责条款 | 广告联系 | 软件发布 | 下载帮助 | 下载排行 | 网站地图 | 特别鸣谢 | 友情连接

copyright; 2005-2008 D9soft.com 第九软件网 版权所有