狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频

當前位置:系統之家 > 技術開發教程 > 詳細頁面

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

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

更新時間:2024-04-09 文章作者:未知 信息來源:網絡 閱讀次數:

在我們經常使用的軟件,比如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  

溫馨提示:喜歡本站的話,請收藏一下本站!

本類教程下載

系統下載排行

狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美jjzz_一区在线视频观看_美脚丝袜一区二区三区在线观看_欧美91视频
91丨九色丨尤物| 欧美+日本+国产+在线a∨观看| 一本久道久久久| 国产三级一区二区| 暴力调教一区二区三区| 91精品欧美福利在线观看| 日本特黄久久久高潮| 国产亚洲精品v| 一区二区三区波多野结衣在线观看| 欧美精品二区三区四区免费看视频| 久久久久久久久伊人| www.亚洲人| 欧美变态tickle挠乳网站| 国产一区二区久久| 欧美精品日韩精品| 国产一区二区视频在线| 欧美日韩精品系列| 久久99精品国产麻豆不卡| 欧美日韩中文国产| 免费日本视频一区| 日本福利一区二区| 久久99精品一区二区三区三区| 在线精品视频免费播放| 久久国产精品99精品国产| 欧美视频在线播放| 国产一区二区三区香蕉| 91麻豆精品国产综合久久久久久| 国产精品综合av一区二区国产馆| 777a∨成人精品桃花网| 成人免费毛片片v| 久久影院午夜论| 欧美日韩日本网| 亚洲色大成网站www久久九九| 在线日韩电影| 午夜激情综合网| 欧美亚洲综合在线| 国产成人综合在线| 26uuu亚洲| 一区在线免费| 亚洲午夜久久久久中文字幕久| 日本精品一区二区三区四区的功能| 日韩黄色片在线观看| 欧美日韩国产高清一区二区三区 | 日韩欧美三级在线| 91在线观看高清| 18欧美乱大交hd1984| 性欧美videos另类喷潮| 蜜桃久久av一区| 日韩女优av电影在线观看| 欧美一区二区三区久久精品| 中文字幕日本不卡| 久久青青草综合| 国产91露脸合集magnet| 国产日韩成人精品| 午夜影院日韩| 国产精品99久久不卡二区| 欧美激情在线免费观看| 午夜在线一区二区| 国产精品一级在线| 国产精品伦一区| 在线一区二区三区| 99久久综合国产精品| 一区二区在线观看免费| 欧美色老头old∨ideo| 99久久久久久| 亚瑟在线精品视频| 2欧美一区二区三区在线观看视频| 亚洲精品一级| 国产曰批免费观看久久久| 国产欧美日韩精品一区| 久久中文精品| 色综合欧美在线视频区| 偷拍自拍另类欧美| 亚洲精品一区在线观看| 亚洲一区国产| www.日韩精品| 日韩有码一区二区三区| 精品久久国产97色综合| 久久亚洲一区| 欧美精品国产| 国产精品亚洲一区二区三区妖精 | 亚洲调教视频在线观看| 九色porny丨国产精品| 国产精品妹子av| 欧美人狂配大交3d怪物一区| 亚洲第一区色| 99久久综合精品| 美女免费视频一区二区| 一区精品在线播放| 欧美mv日韩mv国产网站| 色悠悠久久综合| 亚洲视频免费| 成人一级视频在线观看| 蜜桃视频免费观看一区| 亚洲欧美综合另类在线卡通| 日韩欧美综合一区| 色视频欧美一区二区三区| 国产精品九九| 成人av在线播放网站| 麻豆久久一区二区| 亚洲一区二区三区国产| 中文字幕精品三区| 精品日韩在线一区| 欧美私人免费视频| 久久精品电影| 亚洲毛片视频| 欧美精品成人| hitomi一区二区三区精品| 极品少妇一区二区三区精品视频| 亚洲成人午夜电影| 亚洲欧美日韩中文播放 | 亚洲欧美日韩系列| 欧美国产日韩在线观看| 欧美成人精精品一区二区频| 欧美日韩激情一区二区| 日本精品裸体写真集在线观看| 亚洲美女一区| 尤物在线精品| 欧美日韩国产免费观看| 不卡的看片网站| 国产999精品久久久久久| 久久国产日韩欧美精品| 日韩高清一区二区| 一级做a爱片久久| 亚洲激情欧美激情| 亚洲男同性恋视频| 亚洲色图欧美在线| 亚洲女厕所小便bbb| 国产精品二三区| 亚洲欧洲中文日韩久久av乱码| 国产精品青草久久| 中文字幕av一区二区三区高 | 精品久久人人做人人爰| 欧美一二三在线| 日韩欧美国产麻豆| 精品国产乱码久久久久久免费| 欧美电视剧免费全集观看| 91精品久久久久久久久99蜜臂| 欧美疯狂做受xxxx富婆| 欧美日本一区二区三区四区| 欧美日韩视频专区在线播放| 欧美视频一区二区三区| 欧美日韩一级片在线观看| 正在播放亚洲一区| 精品剧情v国产在线观看在线| 欧美精品一区二区三区很污很色的 | 免播放器亚洲| 色噜噜夜夜夜综合网| 欧美日韩亚洲综合在线| 欧美一区日本一区韩国一区| 日韩美女在线视频| 久久久另类综合| 欧美国产成人精品| 亚洲激情av在线| 日韩影院免费视频| 国产一区二区三区在线看麻豆| 成人午夜精品在线| 99在线视频精品| 亚洲人成免费| 色域天天综合网| 欧美mv日韩mv国产| 中文在线免费一区三区高中清不卡| 亚洲欧美日韩小说| 图片区小说区国产精品视频 | 一区二区三国产精华液| 日韩高清欧美激情| 国产盗摄精品一区二区三区在线| 91免费看视频| 一区二区国产日产| 欧美三级午夜理伦三级中视频| 欧美一级爆毛片| 日韩伦理免费电影| 日本不卡的三区四区五区| 顶级嫩模精品视频在线看| 欧美精品成人| 久久久久国产一区二区| 日韩午夜av一区| 18成人在线观看| 精品无人码麻豆乱码1区2区| 欧美a级在线| 色综合久久久久网| 精品电影一区二区| 亚洲一卡二卡三卡四卡无卡久久| 韩国女主播成人在线| 欧美日韩一区在线视频| 色狠狠色狠狠综合| 久久综合999| 爽爽淫人综合网网站| 成人美女在线视频| 国产视频一区欧美| 日韩精品一区二区三区中文不卡| ●精品国产综合乱码久久久久 | 亚洲国产精品一区二区久久| 国产成人三级在线观看| 在线日韩av| 日韩亚洲欧美在线| 一个色综合网站| 91免费视频观看| 欧美午夜片在线观看| 自拍偷拍亚洲欧美日韩|