日本免费精品_最新日韩一区_亚洲视频一区在线_a在线视频观看_天天射夜夜骑_粉嫩av一区二区三区_欧美中日韩免费视频_综合图区欧美_国内精品美女在线观看_午夜精品久久久久久久男人的天堂

首頁(yè) > 編程 > Delphi > 正文

Delphi中停靠技術(shù)的實(shí)現(xiàn)

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

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

綜觀市面上比較專業(yè)的各種軟件,我們會(huì)發(fā)現(xiàn)大部分都提供窗體停靠的功能,特別象工具軟件,基本上都或多或少有停靠功能。

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

 

先讓我們來復(fù)習(xí)一下VCL的結(jié)構(gòu),在TWinControl類中有一個(gè)DockSite屬性(boolean),它的作用是是否允許別的控件停靠在它的上面,在TControl類中有一個(gè)DragKind屬性,如果要這個(gè)控件能停靠在別的控件上,就把DragKind屬性設(shè)成dkDock。就這么簡(jiǎn)單,只要設(shè)置一下屬性,一個(gè)支持停靠的程序就完成了。

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

一般的支持停靠的程序都可以在主窗口的上下左右停靠,也就是說在主窗口的邊上放上能被停靠的控件比較好(只要是從TWinControl繼承的都行),一般我們都選擇TPanel,為了便于讀者理解,我們可以假定主窗口的左邊可以停靠,所以在主窗口上放一個(gè)Align屬性為alLeftPanel,取名為LeftDockPanel,寬度為0DockSite屬性為True,當(dāng)然我們的LeftDockPanel應(yīng)該是可以改變大小的,所以在它右邊再放一個(gè)TSplitter,取名為LeftSplitterAlign屬性為alLeft。接下來就是停靠控件了,一般的程序停靠控件都是窗體,所以我們也建一個(gè)窗體,取名叫DockableFormDragKind屬性設(shè)成dkDockDragMode屬性設(shè)為dmAutomatic(自動(dòng)停靠)

現(xiàn)在我們可以運(yùn)行這個(gè)程序了,什么?效果不好?停靠的窗體停靠停靠進(jìn)去后就不見了!

 

哦,我差點(diǎn)忘了,當(dāng)停靠窗體停靠時(shí)Delphi會(huì)產(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);

哇,這么多,別急,讓我細(xì)細(xì)道來:

先讓我們來看看第一個(gè)事件

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

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

//修改預(yù)覽停靠位置

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)在再運(yùn)行程序,當(dāng)你把DockableForm拖動(dòng)到主窗口左邊時(shí),已經(jīng)出現(xiàn)了預(yù)覽停靠位置,也就是虛線包含的范圍。

怎么?窗體又不見了?那當(dāng)然了,我們只是講了OnDockOver,還沒詳細(xì)講解OnDockDrop呢,它才是決定停靠窗體在哪里出現(xiàn)的罪魁禍?zhǔn)祝?/SPAN>

OnDockDrop(Sender: TObject;

  Source: TDragDockObject; X, Y: Integer);

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

它是在停靠窗體進(jìn)入被停靠控件時(shí)發(fā)生的,作用是控制停靠窗體的最終位置。下面添加如下代碼:

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)在再運(yùn)行程序,哇塞,成功了。出現(xiàn)了一個(gè)和DelphiIDE完全一樣的停靠窗體,上面是兩條橫線,用來把它拖出來,右上角有一個(gè)小X是用來關(guān)閉的。

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

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

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

procedure TDockableForm.FormClose(Sender: TObject;

  var Action: TCloseAction);

begin

  MainForm.LeftDockPanel.Width := 0;

  Action := caHide;

end;

 

以上所講的是如何在主窗口上停靠窗體,原代碼都通過測(cè)試。同理,我們可以在主窗口的右邊,下邊,上邊都實(shí)現(xiàn)停靠功能。

對(duì)了,剛才我們只介紹了OnDockOverOnDockDrop,忘了介紹別的事件,下面簡(jiǎn)單介紹一下:

3OnGetSiteInfo(Sender: TObject; DockClient: TControl;

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

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

有一個(gè)引用參數(shù)叫CanDock,和OnDockOver中的Accept差不多,都是詢問是否允許停靠。在這里可以不寫,CanDock默認(rèn)就是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);

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

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

OnUnDock只在停靠窗體變成浮動(dòng)時(shí)觸發(fā)

 

 

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

Delphi中只要是從TWinControl繼承的控件都支持被停靠(如上面的LeftDockPanel),也就是有DockSite這個(gè)屬性;所有從TControl繼承的控件都支持停靠(如上面的DockableForm),也就是有DragKind這個(gè)屬性.所以支持被停靠的控件都支持停靠,支持停靠的控件不一定支持被停靠,道理很簡(jiǎn)單,因?yàn)?/SPAN>TWinControl繼承于TControlOnDockOver事件是控制停靠窗體的預(yù)覽位置;OnDockDrap事件是控制停靠窗體的最終位置;OnGetSiteInfo是詢問是否可以停靠;OnStartDock是停靠開始,OnEndDock是停靠結(jié)尾,OnUnDock是不停靠(也就是被拖出來時(shí))

 

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

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

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

  TCMDockClient = packed record

    Msg: Cardinal;

    DockSource: TDragDockObject;

    MousePos: TSmallPoint;

    Result: Integer;

  end;

其中DockSource包含了停靠拖動(dòng)操作的信息,前面已經(jīng)提到過;MousePos是鼠標(biāo)的位置。CM_DOCKCLIENT事件在停靠和被停靠控件都可以捕獲,因?yàn)樗?/SPAN>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)建一個(gè)宿主窗體,取名叫TiledHost,把它的DockSite設(shè)成True。它的作用是用來裝載兩個(gè)DockableForm的。

首先在DockableForm中捕獲DOCKCLIENT消息,在里面完成兩個(gè)窗體的相互停靠

聲明:

private

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

end;

 

實(shí)現(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的實(shí)例,然后用ManualDock函數(shù)把自己停靠到TTiledHost,把Message.DockSource.Control也停靠到TTiledHost,這樣就完成了窗體的相互停靠,當(dāng)然,要是我們要程序產(chǎn)生停靠的預(yù)覽效果,就在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;

 

怎么樣,效果還可以吧。對(duì)了,需要注意的是,用ManualDock函數(shù)可以安全的完成停靠功能,不要用Dock函數(shù)。ManualDock函數(shù)有一些參數(shù):

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

NewDockSite:要被停靠的窗體;

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

ControlSide: 停靠的位置,可以是上,下,左,右,全部等。

 

當(dāng)然,我們也可以讓TiledHost也具有和LeftDockPanel一樣有被停靠的功能,只要把TiledHost看成前面的LeftDockPanel,添加一些屬性和事件;把TiledHost看成DockableForm

就可以有停靠的功能了。具體的做法這里不再闡述了,相信對(duì)VCL有深刻研究的大蝦都知道怎么做了。

 

 

下面我來講一下兩個(gè)窗體怎樣停靠成PageControl樣式。

首先創(chuàng)建一個(gè)窗體,叫TabHost,在它上面放一個(gè)PageControl,Align屬性設(shè)成alClient,讓它占滿整個(gè)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封裝了一些對(duì)停靠的支持,它捕獲了CM_DOCKCLIENT

CM_DOCKNOTIFICATIONCM_UNDOCKCLIENTWM_LBUTTONDBLCLK消息處理停靠動(dòng)作。具體可以查看TPageControl的原代碼。

 

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

 

講了一大堆,還是沒有把Delphi支持的停靠功能全部講完,據(jù)我所知,還有很多。還是把它們列出來供大家參考(前面介紹的就省略了)

屬性:

1TControl. TBDockHeight               //存儲(chǔ)停靠控件在停靠時(shí)的的高度;

2TControl. LRDockWidth                //存儲(chǔ)停靠控件在停靠時(shí)的的寬度;

3TControl. UnDockHeight               //存儲(chǔ)停靠控件在浮動(dòng)時(shí)的的高度;

4TControl. UnDockWidth                //存儲(chǔ)停靠控件在浮動(dòng)時(shí)的的寬度;

5TControl. HostDockSite           //存儲(chǔ)被停靠控件的實(shí)例

6TControl. FloatingDockSiteClass    //前面講過

7TControl. Floating                        //是否浮動(dòng)

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

10TWinControl .DockClientCount  //在這個(gè)控件里面有幾個(gè)已經(jīng)停靠的控件

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

12TWinControl . DockManager    //一個(gè)控制停靠的類,其實(shí)是一個(gè)ActiveX控件,和它對(duì)應(yīng)的類是TDockTree.

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


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

下一篇:DELPHI與INTERNET2

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
學(xué)習(xí)交流
熱門圖片

新聞熱點(diǎn)

疑難解答

圖片精選

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

欧美日韩中文字幕视频| 在线视频色在线| 韩国av一区二区| 久久电影国产免费久久电影| 国产免费一级| 国产成人精品免费久久久久| 黄色在线资源| 视频一区三区| 国产日韩av一区| 91亚洲国产| 亚洲最新免费视频| 日韩久久久精品| 91精品在线观看入口| 日韩wumaV| 激情久久99| 日本国产在线视频| 婷婷中文字幕综合| 久久99久久久久| 国产一区久久| 免费国产h视频在线观看86| 亚洲人线精品午夜| 日本精品在线播放| 亚洲国产福利| 久久婷婷综合国产| 国产黄在线播放| 久久蜜桃一区二区| 日韩精品视频在线看| 蜜桃视频一日韩欧美专区| 日本视频久久久| 欧美二区在线观看| 日韩在线视频一区二区三区| 日韩专区中文字幕| 久久91精品久久久久久秒播| 在线一区二区三区精品| 亚洲专区一二三| 在线视频不卡国产V| 国产欧美日韩精品在线| 国产欧美日韩不卡免费| 欧美91精品| 日韩欧美在线网站| 久久精品99久久久久久久久| a视频免费在线观看| 亚洲制服丝袜一区| 国产黄色精品| 精品人妻一区二区三区视频| 91精品国产自产在线观看永久∴| 国产免费不卡av| 国产高清一区| 日韩欧美三级视频| 国产www在线观看| 91精品国产91| 亚洲三级av| 99在线精品视频免费观看20| 日韩中文字幕视频在线观看| av影视在线看| 亚洲欧美999| 国产欧美日韩精品综合| 狠狠色噜噜狠狠狠狠97| 亚洲最新永久观看在线| 久草中文在线观看| 欧美日韩中文字幕| 中文字幕乱码在线| 中文字幕精品一区二| 欧美日韩在线视频免费观看| 日韩精品视频在线免费观看| 欧美日韩国产一区| 日韩久久精品网| 国产无遮挡在线视频免费观看| 免费高清在线一区| 欧美自拍一区| 蜜臀久久精品| 色综合天天综合网天天狠天天| 91精品国产91久久久久| 国产亚洲人成a一在线v站| 精品国产1区2区3区| 午夜成人鲁丝片午夜精品| 欧美日韩不卡在线视频| 欧美日韩日本视频| 精品亚洲永久免费| 在线手机中文字幕| 国产乱码午夜在线视频| 中文字幕欧美亚洲| 欧美日韩在线视频首页| 午夜伊人狠狠久久| 国产在线视频一区二区| 91精品观看| 亚洲国产午夜精品| 欧美日韩精品免费在线观看视频| 在线国产99| 99视频在线看| 中文在线不卡视频| 亚洲欧美视频一区二区三区| 91久久中文| 亚洲一区二区三区精品中文字幕| 国产一二三区精品视频| 久艹在线视频| 国产偷国产偷亚洲清高网站 | 在线精品日韩| 天天综合日日夜夜精品| 91精品国产91久久久久久久久| 亚洲中文字幕一区| 一区二区视频免费看| 久久激情一区| 一区三区视频| 69免费视频| 一区二区不卡视频在线观看| 欧美大片在线观看一区| 久久 天天综合| 中文字幕在线日韩| 欧美日韩国产在线观看| 欧美日韩国产黄色| 国产激情在线播放| www中文字幕| 中文字幕精品视频在线| 伊人www22综合色| 国产嫩草影院久久久久| 亚洲校园欧美国产另类| 久久蜜桃精品| 亚洲福利一区二区三区| 日韩国产欧美三级| 国产欧美日韩亚洲| 亚洲国产福利视频| 日韩欧美国产视频| 亚洲娇小xxxx欧美娇小| 欧美日韩在线视频一区| 欧美日韩视频免费看| 色综合影院在线| 日韩欧美国产黄色| 77777_亚洲午夜久久多人| 日韩国产成人精品| 日本a口亚洲| 欧美日韩综合视频| 国产小视频在线| 色www精品视频在线观看| 国产偷国产偷亚洲清高网站| 欧美另类专区| 国产一区免费视频| www.日韩免费| 国产一级久久久| 日韩精品在线看| 日韩精品一级| 日韩在线a电影| 欧美日韩第一区日日骚| 国产欧美中文字幕| 精品国产乱码久久久久久蜜臀 | 97久久精品午夜一区二区| 欧美日韩一二| 亚洲二区自拍| 亚洲а∨精品天堂在线| 在线日韩中文字幕| 精品久久久久久无| 国产免费电影网站入口| 亚洲一区在线观看视频| 精品在线91| 欧美特黄一区| 91九色精品视频| 日韩欧美一级在线播放| 日韩在线观看精品| 欧美不卡一区二区| 欧美一级日韩一级| 中文字幕2020第一页| 亚洲乱码在线观看| 日韩欧美在线看| 一区二区国产在线| 久草视频在线看| 亚洲黄色片在线观看| 欧美专区中文字幕| 欧美国产日韩综合| 欧美日韩在线国产| 国产手机视频一区二区| 91精品国产色综合久久不卡蜜臀| 国产三级精品网站| 日韩欧中文字幕| 亚洲欧美韩国综合色| 久久久91精品| 黄色国产网站在线观看| 久久久精品日韩| 欧美日韩国产区| 欧美三级在线看| 国产日韩精品在线看| 日韩视频精品在线观看| 日韩 国产 一区| 日韩欧美一级二级三级久久久| 在线观看中文字幕一区| 婷婷精品视频| 欧美日韩国产中文精品字幕自在自线 | 中文字幕精品视频在线| 欧美色视频一区二区三区在线观看| 国产乱国产乱300精品| 国产一区高清视频| 不卡av免费在线| 91精品久久久久久久久久| 国产在线拍偷自揄拍精品| 91精品高清| 精品乱人伦一区二区三区| 亚洲 欧美综合在线网络| 日韩欧美亚洲国产一区| 国产精久久久久| 国产婷婷色一区二区三区| 日韩精品综合在线| 欧美熟妇乱码在线一区| 国产99亚洲| 日韩在线视频在线观看| 国产无套粉嫩白浆在线2022年| 国产拍揄自揄精品视频麻豆| 亚洲第一福利视频在线| 欧美 中文字幕| 欧美中文字幕视频在线观看| 精品视频—区二区三区免费| 欧美国产一级片| 亚洲综合欧美在线| 日韩欧美三级视频| 国产中文在线播放| 日韩中文在线字幕| 亚洲专区一区| 日韩视频专区| 精品亚洲成a人片在线观看| 97最新国自产拍视频在线完整在线看| 日韩精品视频免费播放| 欧美日韩国产高清一区| 精品不卡一区二区| 日韩一二三四区| 中文字幕欧美亚洲| 亚洲图片小说综合| 日韩欧美中文第一页| 日韩精品视频网| 成人a在线视频免费观看| 深夜福利一区二区| 在线中文字幕视频观看| 精品一区二区三区中文字幕在线| 国产资源中文字幕| 国产欧美日韩最新| 亚洲成av人片在线| 一区二区高清在线| 日韩精品视频免费播放| 欧美日韩精品免费在线观看视频| 在线观看国产一级片| aaa大片在线观看| 视频一区二区国产| 亚洲中午字幕| 白嫩少妇丰满一区二区| 国产偷久久久精品专区| av丝袜在线| 亚洲欧洲日产国码av系列天堂| 国产高清精品二区| 日韩精品―中文字幕| 日韩免费电影网站| 日本不卡一区在线| 国产成人精品日本亚洲专区61| 亚洲综合在线视频| av免费在线网站| www.中文字幕在线观看| 亚洲国产午夜精品| 日韩在线不卡一区| 中文字幕在线精品| 欧美日韩精品综合在线| 亚洲免费在线视频一区 二区| 欧美日韩国产一级片| 中文字幕亚洲区| 国产一级片在线播放| 亚洲一级网站| 中文字幕最新精品| 亚洲欧美久久久| 欧美黄页在线免费观看| 精人妻一区二区三区| 91久久中文| 欧美日韩中国免费专区在线看| 亚洲免费视频一区| 91www成人久久| 欧美乱大交xxxxx免费| 不卡一区二区三区视频| 伊人中文字幕在线观看| 久久久精品午夜少妇| 日韩中文字幕第一页| 久久久精品国产免费观看同学| 日韩久久精品成人| 亚洲尤物av| 欧美,日韩,国产在线| 久久久精品福利| 日韩欧美亚洲视频| 国产99亚洲| 日韩精品在线免费看| 最新日韩中文字幕| 免费精品国产自产拍在| 999精品色在线播放| 成人禁用看黄a在线| 一级片免费在线播放| 91精品国产高清91久久久久久| 欧美日韩精品三区| 欧美高清一区| 亚洲第一视频网站| 日韩视频一区| 精品在线一区二区三区| 亚洲娇小xxxx欧美娇小| 天天综合天天添夜夜添狠狠添| 中文字幕线观看| 亚洲高清在线免费| 二区中文字幕| 亚洲最新永久观看在线| 日韩国产在线观看一区| 欧美激情视频一区二区三区在线播放 | 日韩欧美色综合| 日韩av一区二区在线观看| 日韩国产欧美在线视频| 久久精品欧美日韩精品| 日韩欧美久久| 欧美黄页在线免费观看| 日韩欧美在线中文字幕| 日韩精品在线网站| 欧美日韩一级片在线观看| 中文字幕视频在线免费欧美日韩综合在线看| 91精品国产综合久久久久| 91精品免费看| 韩国一区二区av| 日韩欧美中文字幕精品| 婷婷久久综合网| 日韩va亚洲va欧洲va国产| av首页在线| 欧美亚洲视频在线看网址| 久久视频在线免费观看| av一区在线| 久久婷婷综合国产| 91精品观看| 欧美成人精品在线| 精品激情国产视频| 久久99精品国产| 中文天堂在线一区| 日韩av一区在线| 国产在线观看91| 一级片在线播放| wwwav在线播放| 亚洲欧美伊人| 亚洲欧美中文字幕在线一区| 色综合久久六月婷婷中文字幕| 国产综合精品在线| 1区2区3区在线视频| 91精品国产综合久久福利| 国产欧美日韩亚洲| 日本国产在线视频| 国产欧美日韩精品在线观看| 日韩av综合在线观看| 欧美日韩精品综合| 中文字幕日韩欧美在线视频| 国产资源在线观看| 亚洲免费专区| www.精品视频| 久久精品网站免费观看| 激情国产在线| 日韩精品a在线观看91| 国产福利第一页| 日韩在线中文| 极品久久久久久| 欧美亚洲视频在线看网址| 欧美在线视频第一页| 51精品免费网站| 欧美日韩中文字幕在线| 午夜国产在线视频| 日韩欧美在线综合网| 日韩欧美中文| 欧美日韩国产综合视频在线观看| 色综合久久88色综合天天免费| 91精品婷婷国产综合久久| 欧美一级手机免费观看片| 中文字幕在线观看播放| 91精品国产高清久久久久久| 欧美成人二区| av免费在线不卡| 国产 中文 字幕 日韩 在线| 中文字幕日韩欧美在线视频| 国产欧美日产一区| 国自产拍在线网站网址视频| 91精品在线免费观看| 影音先锋一区二区资源站| 日韩 欧美 综合| 在线不卡一区二区| 欧美日韩在线精品成人综合网| 国产婷婷色一区二区三区| 一区二区三区精品在线| 91精品久久久久久久久久| 欧美日韩国产免费观看视频| 在线视频国内一区二区| aaa大片在线观看| 天天在线视频色| 欧美日韩性视频| 中文字幕在线观看国产| 91精品国产色综合久久久蜜香臀| 不卡视频一区二区| 国自产拍在线网站网址视频| 亚洲久草视频| 国产绿帽一区二区三区| 日韩中文字幕视频在线| 中文字幕在线观看播放| 精人妻一区二区三区| 国产精品一区二区三区免费观看| 国产一级视频| www在线播放| 中文字幕日韩亚洲| 欧美日韩国产在线| 欧美一级搡bbbb搡bbbb| 91精品国产综合久久久蜜臀粉嫩|