亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

Delphi中??考夹g(shù)的實現(xiàn)

2019-11-18 18:47:02
字體:
供稿:網(wǎng)友

隨著軟件技術(shù)的不斷進步,軟件界面也越來越美觀,操作也越來越方便。

綜觀市面上比較專業(yè)的各種軟件,我們會發(fā)現(xiàn)大部分都提供窗體??康墓δ埽貏e象工具軟件,基本上都或多或少有??抗δ堋?/SPAN>

自然,Delphi也支持???,而且她和VCL緊密結(jié)合,對于廣大的Delphi程序員來說更是一大福音。讓我們省去枯燥的編碼時間。把注意力集中在核心程序的構(gòu)思上。

 

先讓我們來復習一下VCL的結(jié)構(gòu),在TWinControl類中有一個DockSite屬性(boolean),它的作用是是否允許別的控件停靠在它的上面,在TControl類中有一個DragKind屬性,如果要這個控件能停靠在別的控件上,就把DragKind屬性設(shè)成dkDock。就這么簡單,只要設(shè)置一下屬性,一個支持??康某绦蚓屯瓿闪?。

當然,上面說的只是最最基本的步驟,有了以上兩步,我們就可以繼續(xù)編寫代碼實現(xiàn)更復雜的功能。

一般的支持??康某绦蚨伎梢栽谥鞔翱诘纳舷伦笥彝?浚簿褪钦f在主窗口的邊上放上能被??康目丶容^好(只要是從TWinControl繼承的都行),一般我們都選擇TPanel,為了便于讀者理解,我們可以假定主窗口的左邊可以??浚栽谥鞔翱谏戏乓粋€Align屬性為alLeftPanel,取名為LeftDockPanel,寬度為0DockSite屬性為True,當然我們的LeftDockPanel應(yīng)該是可以改變大小的,所以在它右邊再放一個TSplitter,取名為LeftSplitter,Align屬性為alLeft。接下來就是停靠控件了,一般的程序??靠丶际谴绑w,所以我們也建一個窗體,取名叫DockableForm,DragKind屬性設(shè)成dkDock,DragMode屬性設(shè)為dmAutomatic(自動停靠)。

現(xiàn)在我們可以運行這個程序了,什么?效果不好???康拇绑w停靠??窟M去后就不見了!

 

哦,我差點忘了,當??看绑w停靠時Delphi會產(chǎn)生一些事件,他們分別是

1OnDockOver(Sender: TObject; Source: TDragDockObject;

      X, Y: Integer; State: TDragState; var Accept: Boolean);

2OnDockDrop(Sender: TObject; Source: TDragDockObject;

      X, Y: Integer);

3OnGetSiteInfo(Sender: TObject; DockClient: TControl;

      var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);

4OnStartDock(Sender: TObject;

      var DragObject: TDragDockObject);

5OnEndDock(Sender, Target: TObject; X, Y: Integer);

6OnUnDock(Sender: TObject; Client: TControl;

      NewTarget: TWinControl; var Allow: Boolean);

哇,這么多,別急,讓我細細道來:

先讓我們來看看第一個事件

OnDockOver是在??靠丶?/SPAN>(DockableForm)掠過被停靠控件(LeftDockPanel)時觸發(fā)的。Source包含了???/SPAN>拖動操作的信息,其中有一個重要的屬性是Control,就是DockableForm,另一個重要的屬性是DockRect,就是停靠的位置;X,Y是鼠標的位置,State的狀態(tài)有dsDragEnter, dsDragLeave, dsDragMove,分別表示拖動進入,拖動離開,拖動移動;Accept是是否同意??康囊馑?。OnDockOver事件主要作用是控制停靠窗體的預覽位置,下面我們來加入以下代碼:

PRocedure TMainForm.LeftDockPanelDockOver(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer; State: TDragState;

  var Accept: Boolean);

var

  ARect: TRect;

begin

  Accept := Source.Control is TDockableForm;

  if Accept then

  begin

//修改預覽??课恢?/SPAN>

ARect.TopLeft := LeftDockPanel.ClientToScreen(Point(0, 0));

    ARect.BottomRight := LeftDockPanel.ClientToScreen(

      Point(Self.ClientWidth div 3, LeftDockPanel.Height));

    Source.DockRect := ARect;

  end;

end;

 

現(xiàn)在再運行程序,當你把DockableForm拖動到主窗口左邊時,已經(jīng)出現(xiàn)了預覽??课恢?,也就是虛線包含的范圍。

怎么?窗體又不見了?那當然了,我們只是講了OnDockOver,還沒詳細講解OnDockDrop呢,它才是決定??看绑w在哪里出現(xiàn)的罪魁禍首:

OnDockDrop(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer);

參數(shù)和OnDockOver差不多,只是少了State: TDragStatevar Accept: Boolean

它是在??看绑w進入被停靠控件時發(fā)生的,作用是控制??看绑w的最終位置。下面添加如下代碼:

procedure TMainForm.LeftDockPanelDockDrop(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer);

Begin

  LeftDockPanel.Width := ClientWidth div 3;

  LeftSplitter.Left := LeftDockPanel.Width + LeftSplitter.Width;

End;

現(xiàn)在再運行程序,哇塞,成功了。出現(xiàn)了一個和DelphiIDE完全一樣的??看绑w,上面是兩條橫線,用來把它拖出來,右上角有一個小X是用來關(guān)閉的。

不過好景不長,當我們把它關(guān)閉時,裝載DockableFormLeftDockPanel不能還原,還是霸占著主窗口的客戶區(qū),怎么辦?

嘻嘻,忘了告訴你們了,其實Delphi早就為我們作好了一切。

請打開DockableForm的關(guān)閉事件,你會發(fā)現(xiàn)原來當你點擊右上角那個小X關(guān)閉DockableForm時,它會觸發(fā)DockableFormOnClose事件,在OnClose事件中把LeftDockPanel的寬度設(shè)為0就行了。

procedure TDockableForm.FormClose(Sender: TObject;

  var Action: TCloseAction);

begin

  MainForm.LeftDockPanel.Width := 0;

  Action := caHide;

end;

 

以上所講的是如何在主窗口上??看绑w,原代碼都通過測試。同理,我們可以在主窗口的右邊,下邊,上邊都實現(xiàn)??抗δ堋?/SPAN>

對了,剛才我們只介紹了OnDockOverOnDockDrop,忘了介紹別的事件,下面簡單介紹一下:

3OnGetSiteInfo(Sender: TObject; DockClient: TControl;

      var InfluenceRect: TRect; MousePos: TPoint; var CanDock: Boolean);

這個事件是在窗體移動時觸發(fā)的,所以經(jīng)常觸發(fā),它里面的DockClient就是TDockableForm,

有一個引用參數(shù)叫CanDock,和OnDockOver中的Accept差不多,都是詢問是否允許???。在這里可以不寫,CanDock默認就是True,也可以寫上CanDock := DockClient is TDockableForm;

 

4OnStartDock(Sender: TObject;

      var DragObject: TDragDockObject);

5OnEndDock(Sender, Target: TObject; X, Y: Integer);

6OnUnDock(Sender: TObject; Client: TControl;

      NewTarget: TWinControl; var Allow: Boolean);

這三個事件都是在DockableForm上面有用,意思分別是停靠開始,停靠結(jié)尾,不???/SPAN>(也就是被拖出來時)。

OnStartDockOnEndDock經(jīng)常會被觸發(fā),

OnUnDock只在??看绑w變成浮動時觸發(fā)

 

 

講了那么多,大家有沒有被搞糊涂?那好,我來做一下總結(jié):

Delphi中只要是從TWinControl繼承的控件都支持被???/SPAN>(如上面的LeftDockPanel),也就是有DockSite這個屬性;所有從TControl繼承的控件都支持???/SPAN>(如上面的DockableForm),也就是有DragKind這個屬性.所以支持被??康目丶贾С滞??,支持??康目丶灰欢ㄖС直煌?浚览砗芎唵?,因為TWinControl繼承于TControl。OnDockOver事件是控制??看绑w的預覽位置;OnDockDrap事件是控制??看绑w的最終位置;OnGetSiteInfo是詢問是否可以???;OnStartDock是??块_始,OnEndDock是??拷Y(jié)尾,OnUnDock是不???/SPAN>(也就是被拖出來時)

 

想必Delphi用的熟的大蝦都知道在Delphi的可停靠窗體間可以相互停靠,而且花樣還很多,可以??砍刹⑴诺?,也可以??砍?/SPAN>PageControl樣式的,兩個可??看绑w合并后的窗體又可以再和別的可??看绑w合并,形成樹狀。下面來介紹這方面的技術(shù):

說道這里,我們不得不介紹一下CM_DOCKCLIENT消息和TCMDockClient結(jié)構(gòu),

CM_DOCKCLIENT消息和TCMDockClient結(jié)構(gòu)是相互對應(yīng)的,TCMDockClient的結(jié)構(gòu)是:

  TCMDockClient = packed record

    Msg: Cardinal;

    DockSource: TDragDockObject;

    MousePos: TSmallPoint;

    Result: Integer;

  end;

其中DockSource包含了停靠拖動操作的信息,前面已經(jīng)提到過;MousePos是鼠標的位置。CM_DOCKCLIENT事件在??亢捅煌?靠丶伎梢圆东@,因為它是TWinControl類發(fā)出的,

代碼如下:

procedure TWinControl.DockDrop(Source: TDragDockObject; X, Y: Integer);

begin

  if (Perform(CM_DOCKCLIENT, Integer(Source), Integer(SmallPoint(X, Y))) >= 0)

    and Assigned(FOnDockDrop) then

    FOnDockDrop(Self, Source, X, Y);

end;

 

可以看出,TWinControl是先發(fā)送DOCKCLIENT消息,再觸發(fā)OnDockDrop事件的。

為了演示可停靠窗體之間相互???,我們先創(chuàng)建一個宿主窗體,取名叫TiledHost,把它的DockSite設(shè)成True。它的作用是用來裝載兩個DockableForm的。

首先在DockableForm中捕獲DOCKCLIENT消息,在里面完成兩個窗體的相互???/SPAN>

聲明:

private

procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT;

end;

 

實現(xiàn):

procedure TDockableForm.CMDockClient(var Message: TCMDockClient);

var

  Host: TForm;

begin

  if Message.DockSource.Control is TDockableForm then

  begin

Host := TTiledHost.Create(application);

    Host.BoundsRect := Self.BoundsRect;

    Self.ManualDock(Host, nil, alNone);

    Self.DockSite := False;

    Message.DockSource.Control.ManualDock(Host, nil, alNone);

    TDockableForm(Message.DockSource.Control).DockSite := False;

    Host.Visible := True;

End;

end;

先解釋一下上面的代碼,首先創(chuàng)建TTiledHost的實例,然后用ManualDock函數(shù)把自己停靠到TTiledHost,把Message.DockSource.Control也??康?/SPAN>TTiledHost,這樣就完成了窗體的相互???,當然,要是我們要程序產(chǎn)生??康念A覽效果,就在DockableFormOnDockOver事件里加入代碼:

procedure TDockableForm.FormDockOver(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer; State: TDragState;

  var Accept: Boolean);

var

  ARect: TRect;

begin

  Accept := Source.Control is TDockableForm;

  if Accept then

  begin

    ARect.TopLeft := ClientToScreen(Point(0, 0));

    ARect.BottomRight := ClientToScreen(

      Point(ClientWidth div 2, ClientHeight));

    Source.DockRect := ARect;

  end;

end;

 

怎么樣,效果還可以吧。對了,需要注意的是,用ManualDock函數(shù)可以安全的完成??抗δ埽灰?/SPAN>Dock函數(shù)。ManualDock函數(shù)有一些參數(shù):

function ManualDock(NewDockSite: TWinControl; DropControl: TControl = nil; ControlSide: TAlign = alNone): Boolean;

NewDockSite:要被??康拇绑w;

DropControl:已經(jīng)存在于NewDockSiteTControl,在這里可以把它設(shè)成nil;

ControlSide: ??康奈恢?,可以是上,下,左,右,全部等。

 

當然,我們也可以讓TiledHost也具有和LeftDockPanel一樣有被??康墓δ埽灰?/SPAN>TiledHost看成前面的LeftDockPanel,添加一些屬性和事件;把TiledHost看成DockableForm,

就可以有??康墓δ芰?。具體的做法這里不再闡述了,相信對VCL有深刻研究的大蝦都知道怎么做了。

 

 

下面我來講一下兩個窗體怎樣??砍?/SPAN>PageControl樣式。

首先創(chuàng)建一個窗體,叫TabHost,在它上面放一個PageControl,Align屬性設(shè)成alClient,讓它占滿整個TabHost,別忘了把PageControlDockSite屬性設(shè)成True.

然后我們依次加入代碼:

procedure TDockableForm.FormDockOver(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer; State: TDragState;

  var Accept: Boolean);

var

  ARect: TRect;

begin

  Accept := Source.Control is TDockableForm;

  if Accept then

  begin

    ARect.TopLeft := ClientToScreen(ClientRect.TopLeft);

    ARect.BottomRight := ClientToScreen(ClientRect.BottomRight);

    Source.DockRect := ARect;

  end;

procedure TDockableForm.CMDockClient(var Message: TCMDockClient);

var

  Host: TForm;

begin

  if Message.DockSource.Control is TDockableForm then

  begin

      Host := TTabHost.Create(Application);

      Host.BoundsRect := Self.BoundsRect;

      Self.ManualDock(TTabHost(Host).PageControl1, nil, alClient);

      Message.DockSource.Control.ManualDock(TTabHost(Host).PageControl1, nil, alClient);

      Host.Visible := True;

       End;

End;

代碼的具體意思在這里就不再解釋了,同理也可以讓TabHost具有停靠和被??康墓δ?。還需要說明一下,TPageControl封裝了一些對??康闹С郑东@了CM_DOCKCLIENT,

CM_DOCKNOTIFICATIONCM_UNDOCKCLIENTWM_LBUTTONDBLCLK消息處理??縿幼?。具體可以查看TPageControl的原代碼。

 

工具條的??恳惨粯樱谥鞔绑w上放一個ControlBarCoolBar,把他們的DockSite設(shè)成True;再在上面放ToolBar, ToolBarDragKind屬性設(shè)成dkDock,DragMode屬性設(shè)為dmAutomatic。在這里,TControl有一個屬性叫FloatingDockSiteClass,它的類型是TWinControl的引用(class of TWinControl),只要在主窗口創(chuàng)建時,把ToolBarFloatingDockSiteClass屬性設(shè)成某一個窗體A,比如在設(shè)計時A這個窗體叫ToolBarDockForm,但在程序里面不用顯式的創(chuàng)建A,Delphi會自動創(chuàng)建,當ToolBar被拖動出來時,Delphi自動把它裝載到ToolBarDockForm里,當然ToolBarDockForm也要象上面提到的DockableForm一樣設(shè)置一定的屬性和添加一些代碼。

 

講了一大堆,還是沒有把Delphi支持的??抗δ苋恐v完,據(jù)我所知,還有很多。還是把它們列出來供大家參考(前面介紹的就省略了)

屬性:

1TControl. TBDockHeight               //存儲??靠丶谕?繒r的的高度;

2TControl. LRDockWidth                //存儲??靠丶谕?繒r的的寬度;

3TControl. UnDockHeight               //存儲停靠控件在浮動時的的高度;

4TControl. UnDockWidth                //存儲??靠丶诟訒r的的寬度;

5TControl. HostDockSite           //存儲被??靠丶膶嵗?/SPAN>

6TControl. FloatingDockSiteClass    //前面講過

7TControl. Floating                        //是否浮動

9TControl. DockOrientation        //停靠控件的方位

10TWinControl .DockClientCount  //在這個控件里面有幾個已經(jīng)??康目丶?/SPAN>

11TWinControl . DockClients      //在這個控件里面有已經(jīng)停靠的控件的列表

12TWinControl . DockManager    //一個控制??康念?,其實是一個ActiveX控件,和它對應(yīng)的類是TDockTree.

13. TWinControl .UseDockManager   //是否使用DockManager。


上一篇:用Delphi處理公歷到農(nóng)歷的轉(zhuǎn)換

下一篇:DELPHI與INTERNET2

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網(wǎng)友關(guān)注

欧美精品一区二区三区在线看午夜| 精品一区二区三区在线观看| 国产h在线观看| 久色乳综合思思在线视频| 91豆麻精品91久久久久久| 亚洲激情成人在线| 亚洲一区二区3| 国产精品欧美激情在线| 国产99久久精品一区二区300| 国产成人精品亚洲日本在线桃色| 成人资源视频网站免费| 久久福利在线| 欧美激情亚洲激情| 国产亚洲无码精品| 在线精品亚洲| 国产精品久久久久久久久免费相片| 日韩中文字幕一区二区高清99| av天堂永久资源网| 国产精品美女一区二区在线观看| 久久69av| 日韩影片中文字幕| 精品人妻一区二区三区香蕉| 欧美裸体xxxx极品少妇| 国产一级在线观看| 成人午夜精品无码区| 成人在线免费播放视频| 国产亚洲精品91在线| 18av视频| 欧美在线一级va免费观看| 国产卡1卡2卡三卡在线| 欧美日韩尤物久久| 自拍网站在线观看| 在线观看成人av电影| 欧美精品自拍偷拍| 精品国产va久久久久久久| 国产精品中文字幕亚洲欧美| 国内精品免费视频| 99精品视频免费版的特色功能| 豆花视频一区二区| 久久日韩精品| 欧美亚洲激情视频| 国产米奇在线777精品观看| 久久精品欧美一区| 三级久久三级久久| 欧美视频在线视频| 欧美日韩福利在线| 色资源二区在线视频| 91桃色在线观看| 一级欧美一级日韩片| 嫩草影院在线观看未满十八| 一区二区不卡视频| 欧美三级第一页| 亚洲图片小说在线| 成人国产亚洲精品a区天堂华泰| 99亚洲精品视频| av福利在线观看| eeuss影影院www在线播放| 亚洲老司机在线| 日韩在线观看免费网站| 精品剧情v国产在线观看| 久草网在线观看| 亚洲黄色中文字幕| 69日本xxxxxxxxx49| 91在线视频在线| 你懂的在线观看视频| 日韩欧美三级一区二区| 天天干天天玩天天操| 日本在线成人一区二区| 国产一区二区视频免费观看| 暧暧视频在线免费观看| 一区二区三区四区精品在线视频| 最新亚洲激情| 亚洲国产一区二区a毛片| 伊人免费视频二| 99久久国产综合精品女不卡| 欧美日韩成人一区| 狠久久av成人天堂| 欧美日韩第一区| 久久久久久无码午夜精品直播| 日本午夜精品一区二区| 狠狠色综合色区| 国产麻豆乱码精品一区二区三区| 看黄网站在线| 日韩一区二区三区精品视频| 成人做爰免费视频免费看| 欧美精品一区二区三区在线播放| 成人黄色av电影| 久久成人福利| 日韩美女主播在线视频一区二区三区| 欧美视频在线免费看| 亚洲精品一区在线观看香蕉| 国产黄色高清视频| 99久久99久久精品国产片| 欧美一区二区精品久久911| 狠狠热免费视频| 亚洲 小说区 图片区 都市| 日本免费在线一区| 天天干在线播放| 国产视频第一页在线观看| 国产又大又黑又粗免费视频| 欧美亚洲一级二级| www.youjizz.com亚洲| 色呦呦呦在线观看| 欧美精品黑人猛交高潮| 污网站免费看| 亚洲女人在线观看| 成人禁用看黄a在线| 艳女tv在线观看国产一区| 日韩美女福利视频| 天天操夜夜操很很操| 亚洲欧美综合国产精品一区| 亚洲精品动态| 欧美一级搡bbbb搡bbbb| 91小视频在线观看| 国产中文字幕91| 性欧美丰满熟妇xxxx性久久久| 精品欧美一区二区三区免费观看| 欧美一区二区视频17c| 亚洲欧美精选| 特黄毛片在线观看| 韩国欧美亚洲国产| 亚洲最大视频网| 精品久久九九| 美女精品自拍一二三四| 黄色网在线视频| 欧洲一区在线电影| 美女久久网站| 无码精品一区二区三区在线| 男女猛烈无遮挡| 欧美性xxxxxxx| 最近中文字幕一区二区| 欧美日韩在线看| videos性欧美另类高清| 成人欧美在线观看| 91在线国产剧情| 日韩毛片无码永久免费看| www成人在线观看| 7777在线视频| 极品少妇xxxx偷拍精品少妇| 久久精品二区亚洲w码| 99国产精品久久久久99打野战| 日本成人中文| 欧美性极品xxxx做受| 九九综合久久| 福利片在线一区二区| 亚洲黄色小说网站| 亚洲国产精品尤物yw在线观看| 欧美亚洲系列| 国产成人自拍网| 欧美 日韩 国产一区二区在线视频| 亚洲综合视频在线观看| 久久艹免费视频| 欧美色图婷婷| 99国产精品久久久久久久久久| 亚洲一区av| 精品少妇一区二区三区密爱| 青青草手机在线| 色欲色香天天天综合网www| 日本精品视频在线播放| 国产欧美一区二区精品性色| 波多野结衣黄色网址| 免费观看亚洲视频| 久久久精品国产一区二区三区| 欧美激情一二三| 欧美成人影院| 精品精品导航| 一代武则天秘史| 狠狠色噜噜狠狠狠狠色吗综合| 日韩精品视频在线观看免费| 欧美韩日一区| 久久精品久久久精品美女| 国产二区在线播放| 久久丫精品久久丫| 国产精品视频免费观看www| 日本精品一区二区三区在线播放视频| 久草网站在线| 国产又粗又黄又爽| 欧美精品综合| 亚洲天堂影视av| 欧美一级二区| 在线成人视屏| 日本中文字幕久久看| 91精彩视频在线播放| 亚洲第一综合| 国产精品偷拍| 免费久久一级欧美特大黄| 亚洲国产福利在线| ckplayer中文字幕| 特色特色大片在线| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 欧美精品一区二区视频| 日韩av影视综合网| 亚洲免费观看高清完整版在线观看| 欧美一级免费片| 久久99热狠狠色一区二区| 99久热re在线精彩视频| 欧美韩国日本精品一区二区三区| 激情五月色婷婷| 国产精品自拍99| 91免费视频网站| 你懂的视频网址| 亚洲毛片一区二区三区| 欧美一区二区三区在| 九色porny自拍| 无码h黄肉3d动漫在线观看| 亚洲欧洲综合另类在线| 一区二区三区四区免费视频| 91片黄在线观看| 免费观看特级毛片| 精品在线一区二区| 国产精品成人免费| 精品国产免费人成电影在线观看四季| www.豆豆成人网.com| 国产精品久久久久77777丨| 97久久超碰精品国产| 韩国成人漫画| 色啪啪.com| 成人一区二区在线观看| 亚洲国产欧美一区二区三区久久| 九色蝌蚪在线| 国产一级在线播放| 91久久精品久久国产性色也91| 亚洲无限av看| 亚洲精品aa| 亚洲国产91视频| 精品久久久中文字幕人妻| 国产精品午夜在线观看| 国产精品自拍av| 不许穿内裤随时挨c调教h苏绵| 国产日韩在线精品av| 欧美激情网站在线观看| 亚洲午夜女主播在线直播| 99精品久久免费看蜜臀剧情介绍| www视频在线播放| 欧美性狂猛xxxxxbbbbb| 亚洲自拍另类| 黄瓜视频污app| 欧美午夜性囗交xxxx| h版电影在线播放视频网址| 美日韩免费视频| 波多野结衣在线中文| 久久久高清一区二区三区| 在线观看免费黄网站| 在线免费看视频| 精品综合久久久久久8888| 波多野结衣久久| 啪啪导航网站| 欧美激情一级二级三级在线视频| 国产成人精品亚洲日本在线观看| 国产日韩一区二区在线观看| 天天舔天天干天天操| 亚洲黄色在线免费观看| 久久影院理伦片| 国产欧美一区二区三区在线| av磁力番号网| 国产精品粉嫩av| 亚洲一区二区免费看| 精精国产xxxx视频在线动漫| 欧美一级视频免费看| 91热这里只有精品| 欧美亚洲一级二级| 国产精品香蕉| 一级做a爰片久久毛片| 一区二区久久久久久| 亚洲午夜色婷婷在线| 国产精品豆花视频| 国产精品久久婷婷| 18禁免费无码无遮挡不卡网站| 91精品国偷自产在线电影| 超级污的网站| 欧美一区二区私人影院日本| 26uuu亚洲国产精品| 亚洲天堂中文字幕在线| 夜夜躁狠狠躁日日躁av| 韩国三级成人在线| av网站免费观看| 国产奶水涨喷在线播放| 欧美成人三级伦在线观看| 在线观看日韩片| 中文久久久久久| 国产一级免费看| 欧美在线看片a免费观看| 久久这里只有精品一区二区| 欧美**vk| 狠狠一区二区三区| 国内精品伊人久久| 97精品人妻一区二区三区蜜桃| 97人人模人人爽人人喊中文字| 少妇献身老头系列| 亚洲高清视频在线观看| 欧洲生活片亚洲生活在线观看| 四虎成人免费| 国产精品高潮呻吟久久av黑人| 黄色一级片免费看| 亚洲愉拍自拍另类高清精品| 精品视频一区 二区 三区| 精品国产中文字幕第一页| 五月天婷亚洲天综合网精品偷| 丝袜诱惑亚洲看片| 欧美亚洲国产激情| 欧美国内亚洲| 亚洲一区三区电影在线观看| 少妇真人直播免费视频| 国产亚洲精品自在久久| 国产91露脸合集magnet| 一本高清dvd不卡在线观看| 激情av中文字幕| 岛国一区二区| 日韩美女天天操| 欧美又粗又长又爽做受| 亚洲欧美国产精品va在线观看| 美女毛片免费看| 狠狠操狠狠色综合网| 欧美日韩精品国产| 欧美高清在线精品一区| 中文字幕不卡在线播放| 成人午夜私人影院| jizzjizz免费大全| 欧美有码在线| 国产精品久久久久白浆| 欧美成人一级视频| 午夜激情小视频| 国产电影一区| 91麻豆国产视频| 国产精品激情电影| 肥婆老bbb肥婆bbbbb| 伊人狠狠色丁香综合尤物| 美女久久久久|