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

首頁 > 編程 > Delphi > 正文

淺談控件(組件)制作方法一(附帶一delphi導出數據到Excel的組件實例)(原創)

2019-11-18 18:29:47
字體:
來源:轉載
供稿:網友
 

從99年學習delphi開始,我就被它的快速開發迷上了,那時候剛接觸編程,對可視化開發特別來勁,原因嘛,不外乎是比C更快的實現啦,這幾年來,從delphi的C/S到三層B/S,大大小小也寫過一些軟件,自認為這delphi也就這么些功能吧,自從最近偶得一本Com本質論,研究了一下VCL源碼,才發現它真的神通廣大(我也不知道用什么詞來形容),最近有些許突破,就在此于大家分享,有不對之處還請指點一二。

說白了,組件只包括二類成員:   屬性和方法(我所說的方法包括了事件)
分屬于四個部分:
  PRivate
  protected
  public
  published
上面四部分的意思在一般的可視化開發書籍當中都會有介紹,這里只相對于delphi作簡單概述。
 private: 所有私有的成員都放在這里,只能被類自身的方法所訪問,而不能被子類訪問,對子類透明。也可說只能被單元本身的方法訪問。
 protected:除了可以被子類繼承外,其余和private一樣。不能被外界訪問。
 public:  公有的,在此間聲明的屬性和方法能被用戶調用。
 published: 出現在delphi開發環境屬性欄中。

首先我們來做一個最簡單的控件,不到五分鐘,你就會明白delphi的組件面板上的組件是如何制作的了。
  新建->New->Component 回車。
  然后在Ancestor type:中選擇你要繼承的父類,這里我們選TComponent.表示繼承TComponent的所有屬性和方法。
  Class Name:中輸入將要制作的組件的類名。(我們輸入TShowText)
  Palette Page:組件將要安裝到delphi的哪個面板上。(我們選擇Samples,你也可以輸入一個新的名字)
 下面的就不用我說了吧。
 點擊OK按鈕,delphi自動生成了一個基本的繼承自TComponent的控件了,也可以這樣理解,我們已經開發了一個與TComponent功能一樣強大的控件,不過這不是我們需要的,下面我們繼續。
下面說明一下組件本身私有變量的讀寫方法:
  比如我們寫了下面一小段:
  private
    FText : String;
    ....
  /*私有變量不是允許被外界使用的,那么要如何才能對這個FText字符串變量進行操作呢?*/

我們還要在Published后面添加這么一段:
  property Text: String read FText write FText;
 這里的意思就是指,這個Text屬性會出現在delphiSDK的屬性欄中,用戶修改屬性欄中的Text實際上都是在修改FText這個字符串變量。read表示用戶讀取Text屬性實際上讀取FText,write當然就表示用戶為Text賦值則存在FText字符串變量中啦。
 如果在這時候保存,并在delphi中安裝.那么我們這個最基本的組件就制作完了。(安裝組件方法在最后有介紹)
 哈哈,是不是很簡單呢?只不過我們的這個組件沒有實現什么具體用處罷了。
 剛才這里我們介紹了屬性,下面我們繼續增加功能,來介紹一下方法的使用。
 我們在Public后面添加如下:
 procedure ShowText();
 然后按Ctrl + Alt +C,系統自動為你添加了些方法的實現代碼。
 接下來我們在寫:
procedure TShowText.ShowText();
begin
 ShowMessage(FText);  
end;
  看到了,上面的ShowMessage顯示的就是類私有變量的值,到這里大家應該明白了,只有在類本事的方法才能訪問私有的變量。這里必須在uses 后面加上Dialogs單元,因為ShowMessage包含在Dialogs單元中,否則通不過。

當然,上面的事件只能在控件中使用,去不能在屬性框中的事件欄中出現,為什么呢?因為這里聲名的方法只是Public的,純方法而已,并沒有聲明為事件。
通過上面的學習,大家是不是已經知道控件的屬性和方法是如何寫的和調了的了呢?
不過,一個真正意義上的控件是離不開事件的,而事件的調用必須通過消息來驅動,這將在我的下一篇中介紹。
 一個功能強大的控件的屬性和方法也不是這么容易的,還需要大家多實踐,多應用。
下面附帶了我寫的一個DBGridToExcel控件,功能是把DBGrid中的數據導出到Excel中。大家可以學習一下,做為參考。為個控件中包括了使用屬性,方法和我們將在下一篇中講到的“事件”。

附1: 安裝自制控件的方法:
  (1).在Component菜單中,選擇"Install Component...".
  (2).在Unit File name 后面單擊“...",選擇"*.pas"控件的單元文件,再點擊OK。在出現的窗口中單擊"install",即安裝完畢。
新裝的控件即出現在你的面板中。

附2: TDBGridToExcel控件的全部源碼,把它拷貝到記事本中,存為.pas文件即可。
unit DBGridToExcel;

{***********************************************************************}
{*                                                                     *}
{*           Export Grid To Word VCL Control for D5 & D6               *}
{*        Copyright(C) xiangding 2003.10.1 All rights reserved         *}
{*            Bug Report: boyxd@163.net                                *}
{*            Author    : 小熊                                         *}
{*                                                                     *}
{***********************************************************************}
{*                                                                     *}
{*          This is a Simple Version                                   *}
{*                                                                     *}
{***********************************************************************}
{*                                                                     *}
{* Install:                                                            *}
{*    Please Save as file GridToExcel.pas then open the file           *}
{*    Click the menu item [Component] --> [Install Component]          *}
{*    Click [Install] button in the Install Component dialog           *}
{*    after install ,you can find the control at component             *}
{*    page [sample]                                                    *}
{*                                                                     *}
{***********************************************************************}
{*                                                                     *}
{* 安裝:                                                              *}
{*   把附件保存,然后用Delphi打開這個GridToExcel.Pas文件,             *}
{*   選擇Delphi菜單--〉Component-->Install Component,                 *}
{*   然后選擇Install即可。安裝之后,在控件面板的Samples頁面上面,      *}
{*   熟悉之后,你可以試著設置一些復雜的屬性,其他的自己摸索吧,        *}
{***********************************************************************}
interface

uses
  Windows, StdCtrls, ComCtrls, Messages, DBGrids, Graphics, ExtCtrls,
  Forms, DB, ComObj, Controls, SysUtils, Classes;

ResourceString
  SPromptExport     = '請等待,正在導出數據……';
  SConnectExcel     = '正在啟動Excel,請稍候……';
  SConnectExcelError= '連接Excel失敗,可能沒有安裝Excel,無法導出.';
  SCancel           = '取消(&C)';
  SError            = '錯誤';
  SConfirm          = '真的要終止數據的導出嗎?';
  SCaption          = '確認';
  SGridError        = '沒有指定數據集,請指定數據集控件!';

type
  TDBGridToExcel = class(TComponent)
  private
    ProgressForm: TForm;
    FShowProgress: Boolean;
    ExcelApp : Variant;
    FTitle: String;
    Quit: Boolean;
    FOnProgress: TNotifyEvent;
    FGrid: TDBGrid;   {The Source Grid}
    ProgressBar: TProgressBar;
    Prompt: TLabel;
    FAutoExit: Boolean;
    FAutoSize: Boolean;
    FDBGrid: TDBGrid;
    procedure SetShowProgress(const Value: Boolean);
    procedure CreateProgressForm;
    procedure ButtonClick(Sender: TObject);
    Function ConnectToExcel: Boolean;
    procedure ExportDBGrid;
    { Private declarations }
  protected
    { Protected declarations }
  public
    Constructor Create(AOwner: TComponent); override;
    Destructor Destroy(); override;
    Procedure ExportToExcel;   {Export Grid To Excel}
    { Public declarations }
  published
    { Published declarations }
    property DBGrid: TDBGrid read FDBGrid write FDBGrid;
    property Title: String read FTitle write FTitle;
    property ShowProgress: Boolean read FShowProgress write SetShowProgress;

    property OnProgress: TNotifyEvent read FOnProgress write FOnProgress;

  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Samples', [TDBGridToExcel]);
end;

{ TDBGridToExcel }

procedure TDBGridToExcel.ButtonClick(Sender: TObject);
begin
  Quit := MessageBox(ProgressForm.Handle, pchar(SConfirm), pchar(SCaption),
    MB_OKCANCEL + MB_ICONINFORMATION) = IDOK;
end;

function TDBGridToExcel.ConnectToExcel: Boolean;
begin
  Result := true;
  Try
    ExcelApp := CreateOleObject('Excel.application');
    ExcelApp.Visible := False;
    if Title<>'' then ExcelApp.Caption := Title;
    ExcelApp.WorkBooks.Add;
  except
    MessageBox(GetActiveWindow,PChar(SConnectExcelError),PChar(SError),Mb_OK+MB_IconError);
    result := false;
  end;
end;

constructor TDBGridToExcel.Create(AOwner: TComponent);
begin
  inherited;
  FShowProgress := True;          {Default value was Show the Progress}
  FAutoExit := False;
  FAutoSize := True;
end;

procedure TDBGridToExcel.CreateProgressForm;
var
  Panel  : TPanel;
  Button : TButton;
begin
  if Assigned(ProgressForm) then exit;  {Aready Create?}

  ProgressForm := TForm.Create(Owner);
  With ProgressForm do
  begin
    Font.Name := '宋體';
    Font.Size := 10;
    BorderStyle := bsNone;
    Width := 280;
    Height := 120;
    BorderWidth := 1;
    Color := clBackground;
    Position := poOwnerFormCenter;
  end;

  Panel := TPanel.Create(ProgressForm);
  with Panel do { Create Panel }
  begin
    Parent := ProgressForm;
    Align := alClient;
    BevelInner := bvNone;
    BevelOuter := bvRaised;
    Caption := '';
  end;

  Prompt := TLabel.Create(Panel);
  with Prompt do { Create Label }
  begin
    Parent := Panel;
    Left := 20;
    Top := 25;
    Caption := SConnectExcel;
  end;

  ProgressBar := TProgressBar.Create(panel);
  with ProgressBar do { Create ProgressBar }
  begin
    Step := 1;
    Parent := Panel;
    Smooth := true;
    Left := 20;
    Top := 50;
    Height := 18;
    Width := 260;
  end;

  Button := TButton.Create(Panel);
  with Button do { Create Cancel Button }
  begin
    Parent := Panel;
    Left := 115;
    Top := 80;
    Caption := SCancel;
    OnClick := ButtonClick;
  end;

  ProgressForm.Show;
  ProgressForm.Update;
end;

destructor TDBGridToExcel.Destroy;
begin

  inherited;
end;

procedure TDBGridToExcel.ExportDBGrid;
var
  Data   : TDataSet;
  ADBGrid: TDBGrid;
  i, j   : integer;
  CurrentPoint : Pointer;
  OldBeforeScroll, OldAfterScroll: TDataSetNotifyEvent;
begin
  Screen.Cursor := crHourGlass;
  try
    try
      TForm(Owner).Enabled := False;
      ExcelApp.DisplayAlerts := false;
      ExcelApp.ScreenUpdating := false;
      Quit := false;

      if ShowProgress then Prompt.Caption := SPromptExport;
      ADBGrid := DBGrid;
      Data := ADBGrid.DataSource.DataSet;
      with ADBGrid do { Insert Table Header }
        for i := 1 to Columns.Count do
          if Columns[i - 1].Visible then
            ExcelApp.Cells[1,i].Value :=Columns[i - 1].Title.Caption;

      CurrentPoint := Data.GetBookmark;  {Save Current Position}
      OldBeforeScroll := Data.BeforeScroll; { Save Old Before Scroll Event handle }
      OldAfterScroll := Data.AfterScroll; { Save Old After Scroll Event Handle }
      Data.DisableControls; { Disable Control }
      Data.BeforeScroll := nil;
      Data.AfterScroll := nil;
 
      if ShowProgress then ProgressBar.Max := Data.RecordCount;
      i := 2;
      Data.First;
      while not Data.Eof do  { Process All record }
      begin
        with ADBGrid do { Process one record }
          for j := 1 to Columns.Count do
            if Columns[j - 1].Visible then
              ExcelApp.Cells[i,j].Value := Columns[j - 1].Field.DisplayText;
        Inc(i);
        Data.Next;
        if Assigned(FOnProgress) then FOnProgress(Self);
        if ShowProgress then { Update Progress UI }
        begin
          ProgressBar.StepIt;
          Application.ProcessMessages;
          if Quit then exit;
        end;
      end;
    except
      MessageBox(GetActiveWindow,PChar(SConnectExcelError),Pchar(SError),MB_OK+MB_ICONERROR);
    end;
    ExcelApp.Visible := False;
    TForm(Owner).Enabled := True;
    Screen.Cursor := crDefault;
    if ShowProgress then FreeAndNil(ProgressForm); { Free Progress Form }
    ExcelApp.DisplayAlerts := True;
    ExcelApp.ScreenUpdating := True;
  finally
    Data.BeforeScroll := OldBeforeScroll; { Restore Old Event Handle }
    Data.AfterScroll := OldAfterScroll;
    Data.GotoBookmark(CurrentPoint);
    Data.FreeBookmark(CurrentPoint);
    Data.EnableControls;
    Screen.Cursor := crDefault;
  end;
end;

procedure TDBGridToExcel.ExportToExcel;
begin
  if DBGrid= nil then raise Exception.Create(SGridError); {No DataSource, then Error}
  if ShowProgress then CreateProgressForm; {Whether or not Show the ProgressForm}
  if not ConnectToExcel then { Exit when error occer }
  begin
    if ShowProgress then  FreeAndNil(ProgressForm);   {release form}
    exit;
  end;
  ExportDBGrid;  {begin Export Data}
end;

procedure TDBGridToExcel.SetShowProgress(const Value: Boolean);
begin
  FShowProgress := Value;
end;
end. 


上一篇:DELPHI的異常及事務保護的常見問題淺析

下一篇:Delphi+Word解決方案參考

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

新聞熱點

疑難解答

圖片精選

網友關注

国产黄在线看| 午夜高潮免费视频| 日韩国产一区三区| 日韩欧美亚洲日产国| 人成在线免费视频| 中文字幕在线观看视频www| 一二三区精品福利视频| 国产网站欧美日韩免费精品在线观看| 欧美日韩精品区| 日韩欧美中文第一页| 91精品国产经典在线观看| 精品精品久久| 国产日韩中文字幕| 日韩色在线观看| 黄色视屏免费在线观看| 欧美在线视频第一页| 欧美 日韩 国产 在线观看| 欧美日韩夫妻久久| av中文资源在线| www在线播放| 欧美日韩亚洲不卡| 91精品999| 亚洲福利精品| 欧美日韩999| 国产一二三视频| 欧美日韩国产综合网| 91精品啪在线观看国产60岁| 中文字幕久久av| 一二三区精品视频| 日韩三级视频在线看| 日韩亚洲欧美中文三级| 99久久www免费| 欧美三级免费观看| 日韩欧美中文在线视频| 久久蜜桃精品| 黄色在线播放网站| 欧美日韩成人综合| 日韩视频不卡中文| 最新中文字幕在线| 精品人妻二区中文字幕| 精品无人国产偷自产在线| 日韩高清在线一区二区| 精品视频资源站| 成人精品国产福利| 亚洲 欧美综合在线网络| 在线观看国产一级片| 日韩中文字幕国产| 久久精品国产视频| 一区二区不卡视频在线观看| 国产综合成人久久大片91| 亚洲素人一区二区| 亚洲伊人婷婷| 国产在线看一区| 国产成人综合精品| 日韩国产在线观看一区| 欧洲精品在线一区| 欧美久久一二三四区| 欧美三级免费观看| 91精品国产91久久久久久不卡| 国产一区三区三区| 欧美色视频一区二区三区在线观看| 亚洲国产www| 国产日韩第一页v| 91精品电影| 精品无人国产偷自产在线| 国产欧美久久久| 国产免费电影网站入口| 精品国产欧美日韩不卡在线观看| 亚洲精品中文字幕乱码三区不卡| 久久riav| 伊人伊成久久人综合网小说| 在线一区二区三区精品| 日韩不卡一二区| 亚洲综合视频一区| 欧美日韩三级视频| 日韩中文字幕在线一区| 国产成人精品免费久久久久| 在线观看区一区二| 亚洲综合在线中文字幕| 欧美午夜精品在线| 久草视频观看| 1区2区在线| 日韩不卡一二三区| 亚洲成在线观看| 国产综合成人久久大片91| 日韩在线精品视频| 欧美 日韩 国产在线| a级在线免费观看| 亚洲羞羞网站| √天堂资源中文www| 欧美亚洲国产激情| 中文字幕在线官网| 久久久另类综合| 91精品国产综合久久香蕉的特点| 不卡在线视频| 伊人国产视频| 中文字幕欧美在线| 国产日韩中文在线| www.久久草| 国产导航在线| 日韩一级网站| 一区二区三区高清在线| 人妻一区二区三区免费| 国产欧美中文字幕| 国产 欧美 在线| 日韩精品高清不卡| 日韩.欧美.亚洲| 欧美一级一级性生活免费录像| 午夜精品一区二区三区视频免费看| 欧美日韩国产一区| 亚洲综合三区| 黄色国产在线| 国产欧美久久久精品免费| 欧美乱大交xxxxx免费| 国产黄色在线播放| 欧美日韩精品在线播放| 精品久久久久久无| 最近高清中文在线字幕在线观看1| 国产欧美日韩在线观看| 蜜桃久久av一区| wwwwww在线观看| av中文资源在线| 在线免费视频一区二区| 91国内在线| 国产亚洲一级| 蜜臀久久精品| 91久久精品网| 一区二区在线高清视频| 樱花草www在线| 亚洲国产无线乱码在线观看| 国产字幕在线看| 中文字幕精品在线| 亚洲成av人片| 欧美日韩中文字幕综合视频| 日韩国产在线观看一区| 国产小视频在线| 国产精久久久久| 欧美久久久精品| 欧美一级免费在线观看| 日韩精品在线看| 人人做人人澡人人爽欧美| 日韩视频在线观看一区| 国产在线看一区| 日韩欧美资源站| 国产91欧美| 不卡福利视频| 欧美日韩亚洲天堂| 亚州黄色一级| 日韩欧美国产高清| 日本不卡高清视频一区| 欧美三级在线播放| 交视频在线观看国产| 亚洲第一中文字幕| 国产对白在线| 欧美日韩亚洲不卡| 日韩国产一区| 国产欧美日韩中文字幕在线| 在线国产99| 91精品久久久久久久91蜜桃| 亚洲一区在线观看视频| 中文av字幕一区| 久久99久久久久久久噜噜| 亚洲一区在线观看免费| 日本熟女一区二区| 天天在线视频色| 一区二区高清视频| 国产在线视频一区二区| 中文精品在线| 亚洲女人天堂a在线播放| 欧美日韩精品欧美日韩精品一| 国产日产一区二区| www.91香蕉视频| 日韩中文欧美| 国产在线观看a| 日韩精品视频免费看| 中文精品视频| 欧美亚洲国产日韩2020| 欧美日韩国产综合视频在线观看| 国产蜜臀在线| 不卡一二三区| 欧美日韩精品欧美日韩精品| 日韩欧美一卡二卡| 日韩欧美一级精品久久| 51精品免费网站| 欧美 日韩 国产在线| 91精品国产综合久久久久久| 精品在线网站观看| 一区二区91| 欧美日韩国产一二| √新版天堂资源在线资源| 五月综合激情日本mⅴ| 国产一级网站视频在线| 日韩中文字幕在线观看视频| www.日韩免费| 日韩国产成人精品| 国产欧美日韩在线观看| 中文字幕日韩精品在线| 日韩欧美在线影院| 免费在线国产| 免费看ww视频网站入口| 日韩精品三级| 午夜国产在线视频| 亚洲免费专区| 亚洲三级中文字幕| 欧美日韩999| www.老鸭窝.com| 国产区在线看| 国产成人一二三区| 国产视频中文字幕在线观看| 香蕉人人精品| 亚洲 欧美综合在线网络| 粉嫩粉嫩芽的虎白女18在线视频| 日韩一级免费在线观看| 日韩精品视频免费播放| 蜜臀91精品国产高清在线观看| 国产三级第一页| 日韩精品大片| 国产午夜精品视频| 久久久水蜜桃| 久久视频在线免费观看| 国产www.大片在线| av中文资源在线| 中文字幕 亚洲视频| 91极品视频在线观看| 亚洲专区一二三| 日韩精品国产欧美| 色一区在线观看| 中文字幕日韩亚洲| 亚洲欧美日本国产专区一区| 欧美日韩视频免费播放| 一区在线免费| 日韩欧美三级在线| 日韩国产在线观看一区| 国产日韩三级| 蜜桃精品在线| 在线不卡日本| 日本啊v在线| 在线看的av| 视频在线一区二区| av影视在线看| 日韩视频精品在线| 国产日韩中文在线| 中文字幕在线看精品乱码| 欧美日韩精品免费在线观看视频| 欧美一级免费观看| 中文字幕欧美亚洲| 另类专区欧美| 日本a口亚洲| 一区二区三区精品99久久| 91精品国产入口| 日本黄色一区二区三区| 精品欧美久久久| 国产日韩中文字幕| 日韩一级在线免费观看| 视频一区二区不卡| 99这里有精品视频| 在线手机中文字幕| 国产亚洲欧美中文| 亚洲视频电影在线| 国产在线精品日韩| 一级特黄大欧美久久久| 日韩欧美色综合网站| 黄色国产在线| 日韩字幕在线观看| 日韩精品视频网站| 在线免费91| 中文字幕最新精品| www.久久久精品| 91吃瓜在线观看| 在线综合 亚洲 欧美中文字幕| 午夜福利一区二区三区| 午夜私人影院在线观看| www.日韩免费| 国产欧美日韩久久| 亚洲成av人片一区二区密柚| 国产欧美日产一区| 中文在线不卡| 中文在线视频| 在线视频一区二区三区在线播放| 一级日本免费的| 日韩欧美高清在线| 免费视频一区三区| 日韩欧美视频一区二区三区四区| 男人的天堂网av| 日韩在线观看视频一区| 欧美日韩在线国产| 日韩专区视频网站| 亚洲乱码一区av黑人高潮| 欧美不卡视频一区| 中文字幕国产欧美| 日韩精品一级| 国产95在线|亚洲| 日韩中文字幕在线视频播放| 欧美日韩第一区日日骚| 中文字幕在线观看国产| 欧美高清一区| 精品国产99| 久久精品日韩无码| 日韩欧美在线不卡| 国产专区中文字幕| 欧美中文字幕在线视频| 免费视频国产一区| 久久韩国免费视频| 欧美一级免费观看| 日韩视频在线一区二区三区| 亚洲成av人片一区二区密柚| 国产三级在线| 欧美日韩国产91| 久久久精品国产99久久精品芒果| 香蕉视频亚洲一级| 精品日韩在线播放| 国产高清在线视频| 极品久久久久久| 国产黄色在线观看| 1区2区3区在线视频| 国产婷婷色一区二区三区| 国产高潮久久久| 一区免费在线| 精品乱人伦一区二区三区| 日韩美女视频一区二区在线观看| 一区二区三区精品在线观看| 中文在线а√在线8| 91精品国产综合久久久蜜臀粉嫩| 亚洲福利精品在线| 成人a在线观看| 国产三级做爰在线观看| 国产手机视频一区二区| 国产999精品在线观看| 亚洲精品欧美二区三区中文字幕 | 亚洲3区在线| 精品对白一区国产伦| 中文字幕视频一区二区三区久| 黄色欧美日韩| 国产成人一区二区精品非洲| 久久久久久91| 久久综合久久综合九色| 日韩免费视频| 午夜一区二区视频| 亚洲欧美99| 亚洲欧美韩国综合色| 久久久精品午夜少妇| 免费国产成人看片在线| 欧美中文字幕| 国产极品嫩模在线视频一区 | 91精品久久久久久蜜臀| 欧美 日韩 国产 高清| 日韩精品视频在线播放| 亚洲中文字幕在线一区| 国产一区久久久| 国产日韩专区| 久久精品国产99| 亚洲女人天堂色在线7777| 精品综合久久久久| 国产成人精品av久久| 天堂在线www天堂中文在线| 国产视频1区| 91麻豆精品在线| 日本亚洲欧美天堂免费| 91九色在线播放| 日韩国产欧美在线视频| 午夜一区二区三区免费| 国产一卡2卡3卡四卡网站| 久久香蕉av| 日韩在线高清| 国产乱一区二区| 欧美三级日韩在线| 国产欧美久久久久久久久| 亚亚洲欧洲精品| 成人精品国产福利| 欧美在线日韩精品| 中文字幕4区| 91精品国产色综合久久不卡蜜臀 | 日韩三级一区| 亚洲女同中文字幕| 国产成人精品综合久久久| 在线免费播放av| 久久久精品日韩欧美| 欧美日韩三级视频| 国产一卡2卡3卡4卡网站免费| 欧美日韩性视频| 在线看av的网址| 在线视频不卡一区二区| 最近中文字幕第一页| 欧美日韩国产首页| 欧美日韩亚洲第一| 91精品国产综合久久精品app | 99久久精品国产成人一区二区| 欧美一级手机免费观看片| 亚洲丝袜一区| 拍真实国产伦偷精品| 二区视频在线观看| 日韩高清在线一区二区| 日本精品二区| 欧美sm一区| 欧美日韩性视频一区二区三区| 国产最顶级的黄色片在线免费观看| 久久久99精品久久| 日韩欧美一级二级三级久久久| 免费看日韩精品| 在线一区二区三区精品|