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

风中飘落1

风中飘落1

2016-01-29 14:14

delphi实例编程之--制作可随处拖放的工具栏,delphi实例编程之--制作可随处拖放的工具栏
 
在我们经常使用的软件,比如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功能的实现;

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/delphi/) 

CoolBar1

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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/delphi/)

ToolBar1在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);
展开更多 50%)
分享

猜你喜欢

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

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

Delphi 拖放编程

编程语言 网络编程
Delphi 拖放编程

s8lol主宰符文怎么配

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

Delphi拖放编程

Delphi
Delphi拖放编程

用Delphi制作Windows 98风格的工具栏

Delphi
用Delphi制作Windows 98风格的工具栏

lol偷钱流符文搭配推荐

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

中望CAD教程之定制工具栏

cad教程 autocad教程 CAD
中望CAD教程之定制工具栏

Delphi编程技巧实例

Delphi
Delphi编程技巧实例

lolAD刺客新符文搭配推荐

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

Delphi让你发送Flash电子邮件(1)

Delphi让你发送Flash电子邮件(1)

《迷你西游》人皇李世民获得与阵容搭配

《迷你西游》人皇李世民获得与阵容搭配
下拉加载更多内容 ↓