六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

如何制作可隨處拖放的工具欄

[摘要]在我們經常使用的軟件,比如photoshop,office,delphi等等,我們經常可以對工具欄進行拖拽操作----將相關的工具欄拖拉出來,形成獨立的小窗口;或者將幾個工具欄進行互相的組合!(這些就是我們常說的DOCK功能).  其實,利用DELPHI或是其它的可視化編程工具(如c++ buil...
在我們經常使用的軟件,比如photoshop,office,delphi等等,我們經常可以對工具欄進行拖拽操作----將相關的工具欄拖拉出來,形成獨立的小窗口;或者將幾個工具欄進行互相的組合!(這些就是我們常說的DOCK功能).

  其實,利用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  


主站蜘蛛池模板: 天天躁夜夜躁狂狂躁综合 | 深夜久久 | 五月婷婷丁香网 | 日本高清一区二区三区不卡免费 | 热久久久 | 色综合天天综合给合国产 | 欧美在线网址 | 四虎在线视频免费观看视频 | 天天干天天做天天射 | 欧美一级美片在线观看免费 | 完整欧美一级淫片免费看 | 欧美桃色视频 | 亚洲成a人片在线观看www | 日韩一级淫片 | 午夜影院在线观看 | 中文字幕免费视频精品一 | 亚洲国产精品高清在线一区 | 一二三四视频社区在线网 | 一区二区三区国产美女在线播放 | 人人看人人添人人谢 | 午夜网站免费版在线观看 | 色一色在线观看视频网站 | 日韩a免费 | 日韩一级一欧美一级国产 | 四色婷婷婷婷色婷婷开心网 | 日本一本在线播放 | 婷婷在线免费视频 | 天天综合色天天综合网 | 欧美一级黄色录像 | 日韩视频观看 | 日韩三级伦理在线 | 色悠久久久久综合欧美99 | 婷婷开心六月久久综合丁香 | 天堂网最新 | 五月天丁香在线 | 五月香蕉网 | 日韩视频在线观看 | 影音先锋色先锋 | 色综合久久中文综合网 | 日本成人h动漫 | 日韩欧美亚洲乱码中文字幕 |