狠狠爱成人网_日韩一级在线_国产综合自拍_亚洲精品韩国_亚洲视频导航_麻豆成人在线播放_欧美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在线视频在线| 美女国产精品| 国产亚洲成年网址在线观看| 午夜不卡av在线| 成人福利视频网站| 色屁屁一区二区| 国产精品色眯眯| 国产精品77777竹菊影视小说| 999亚洲国产精| 精品国产免费一区二区三区香蕉| 亚洲成人免费看| 欧美日韩理论| 欧美大片日本大片免费观看| 天天操天天色综合| 伊人色综合久久天天五月婷| 日韩一区二区三区av| 五月天网站亚洲| 亚洲成人自拍视频| 精品国产电影一区二区| 男男成人高潮片免费网站| 亚洲无线视频| 精品国产免费一区二区三区四区 | 26uuu亚洲综合色| 精品伊人久久久久7777人| 国产主播一区| 日韩美一区二区三区| 日日夜夜精品视频天天综合网| 国内成+人亚洲| 精品国产一区二区精华| 韩国精品久久久| 久久人人97超碰人人澡爱香蕉 | 欧美日韩一区高清| 日精品一区二区三区| 国产一区二区三区黄| 国产精品久久综合| 欧美另类综合| 久久久影视传媒| 国产精品中文字幕一区二区三区| 一本色道久久综合精品竹菊| 亚洲午夜精品网| 一区二区激情| 欧美一个色资源| 国产精品一二三四| 91精品蜜臀在线一区尤物| 免费人成黄页网站在线一区二区 | 国产精品资源在线观看| 精品入口麻豆88视频| 日韩欧美电影在线| 亚洲国产精品久久久久秋霞影院 | aa级大片欧美三级| 日韩欧美一区电影| 日本va欧美va瓶| 国产一区久久| 精品国产露脸精彩对白 | 欧美午夜一区| 欧美精品1区2区| 亚洲一区二区成人在线观看| av不卡在线观看| 欧美日韩一区二区电影| 一区二区三区中文免费| 色综合夜色一区| 91精品国产一区二区| 图片区小说区国产精品视频| 欧美午夜精品久久久久免费视| 91麻豆精品国产91久久久资源速度| 亚洲综合在线免费观看| 欧美视频四区| 久久嫩草精品久久久久| 国产一区二区日韩精品| 日本久久电影网| 亚洲一区二区高清| 亚洲精选成人| 综合色中文字幕| 色综合天天视频在线观看| 欧美成人精品1314www| 黄色成人免费在线| 色哟哟一区二区三区| 亚洲高清一区二区三区| 亚洲片区在线| 亚洲乱码国产乱码精品精98午夜| 欧美精选一区| 国产亚洲一区二区三区四区| www.亚洲在线| 久久影视一区二区| 99re热视频精品| 久久亚洲春色中文字幕久久久| 国产成人自拍在线| 9191国产精品| 丁香激情综合国产| 日韩欧美不卡一区| 成人综合婷婷国产精品久久| 91精品国产品国语在线不卡| 国产九色sp调教91| 欧美电影免费观看完整版| 国产精品一二三四五| 日韩欧美自拍偷拍| 不卡在线观看av| 久久久久久久久蜜桃| 欧美一区综合| 亚洲欧美自拍偷拍| 国产精品久久久免费| 亚洲国产日韩精品| 久久精品二区| 国内外成人在线视频| 欧美一级艳片视频免费观看| 丁香六月综合激情| 国产女人aaa级久久久级| 国内精品99| 黄色一区二区三区四区| 综合网在线视频| 日韩欧美一区二区三区在线| 免费亚洲电影| 欧美在线免费| 蜜桃视频在线一区| 亚洲欧美偷拍三级| 日韩欧美综合在线| 色悠悠亚洲一区二区| 91无套直看片红桃| 久久97超碰色| 亚洲一区二区在线免费看| 久久久久久亚洲综合影院红桃| 日本久久电影网| 在线一区免费观看| 91免费视频观看| 国产一二精品视频| 亚洲动漫第一页| 国产精品区一区二区三| 欧美成人一区二区三区| 欧美性猛交xxxx黑人交| 国产日产精品一区二区三区四区的观看方式 | 午夜欧美精品| 成人av综合一区| 国模娜娜一区二区三区| 亚洲国产一区二区三区| 中文字幕巨乱亚洲| 日韩精品资源二区在线| 在线免费观看日本一区| 日韩天天综合| 欧美国产日本| 成人午夜免费电影| 加勒比av一区二区| 日本在线不卡视频| 亚洲综合一二区| 亚洲欧美一区二区三区极速播放| 国产午夜精品一区二区三区四区| 欧美高清hd18日本| 欧美日韩国产另类不卡| 色网综合在线观看| 麻豆av一区二区三区久久| 99精品视频网| 一本久道久久综合婷婷鲸鱼| 在线成人国产| 悠悠资源网久久精品| 久久精品欧美一区二区三区麻豆| 亚洲欧美综合| 国产精品自拍三区| 日韩黄色一级片| 亚洲丝袜美腿综合| 日韩免费性生活视频播放| 一本色道综合亚洲| 最近看过的日韩成人| 91视频在线看| 国产麻豆91精品| 五月综合激情日本mⅴ| 国产精品国产三级国产aⅴ原创| 欧美福利视频一区| 91久久国产最好的精华液| 精品久久久久久久久久久久包黑料| 日本道在线观看一区二区| 欧美亚洲尤物久久| 这里只有精品免费| 精品三级在线观看| 欧美国产欧美亚州国产日韩mv天天看完整 | 麻豆专区一区二区三区四区五区| 美女视频网站久久| 国产精品911| 91美女在线看| 亚洲国产精品第一区二区| 国产精品夜夜夜| 在线观看三级视频欧美| 欧美精选午夜久久久乱码6080| 日韩一区二区在线观看视频| 精品国产123| 日韩美女精品在线| 日韩高清不卡一区二区| 国产一区二区影院| 欧美一区二区三区免费| 一本色道久久综合亚洲精品婷婷| 在线观看一区| 亚洲人人精品| 亚洲人体大胆视频| 99国产成+人+综合+亚洲欧美|