亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? udockform.pas

?? Delphi的skin.v3.84皮膚美化包 可以使delphi的界面很美觀
?? PAS
字號:
unit uDockForm;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, Menus,
  ExtCtrls, StdCtrls, ComCtrls, Buttons;

type
  TDockableForm = class(TForm)
    Button1: TButton;
    SpeedButton1: TSpeedButton;
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    TabSheet2: TTabSheet;
    Panel1: TPanel;
    CheckBox1: TCheckBox;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    Memo1: TMemo;
    procedure FormDockOver(Sender: TObject; Source: TDragDockObject; X,
      Y: Integer; State: TDragState; var Accept: Boolean);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormShow(Sender: TObject);
  private
    function ComputeDockingRect(var DockRect: TRect; MousePos: TPoint): TAlign;
    procedure CMDockClient(var Message: TCMDockClient); message CM_DOCKCLIENT;
  public
  end;


implementation

{$R *.dfm}

uses uTabHost, uConjoinHost, uMain;

procedure TDockableForm.FormDockOver(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer; State: TDragState;
  var Accept: Boolean);
var
  ARect: TRect;
begin
  Accept := (Source.Control is TDockableForm);
  //Draw dock preview depending on where the cursor is relative to our client area
  if Accept and (ComputeDockingRect(ARect, Point(X, Y)) <> alNone) then
    Source.DockRect := ARect;
end;

function TDockableForm.ComputeDockingRect(var DockRect: TRect; MousePos: TPoint): TAlign;
var
  DockTopRect,
  DockLeftRect,
  DockBottomRect,
  DockRightRect,
  DockCenterRect: TRect;
begin
  Result := alNone;
  //divide form up into docking "Zones"
  DockLeftRect.TopLeft := Point(0, 0);
  DockLeftRect.BottomRight := Point(ClientWidth div 5, ClientHeight);

  DockTopRect.TopLeft := Point(ClientWidth div 5, 0);
  DockTopRect.BottomRight := Point(ClientWidth div 5 * 4, ClientHeight div 5);

  DockRightRect.TopLeft := Point(ClientWidth div 5 * 4, 0);
  DockRightRect.BottomRight := Point(ClientWidth, ClientHeight);

  DockBottomRect.TopLeft := Point(ClientWidth div 5, ClientHeight div 5 * 4);
  DockBottomRect.BottomRight := Point(ClientWidth div 5 * 4, ClientHeight);

  DockCenterRect.TopLeft := Point(ClientWidth div 5, ClientHeight div 5);
  DockCenterRect.BottomRight := Point(ClientWidth div 5 * 4, ClientHeight div 5 * 4);

  //Find out where the mouse cursor is, to decide where to draw dock preview.
  if PtInRect(DockLeftRect, MousePos) then
    begin
      Result := alLeft;
      DockRect := DockLeftRect;
      DockRect.Right := ClientWidth div 2;
    end
  else
    if PtInRect(DockTopRect, MousePos) then
      begin
        Result := alTop;
        DockRect := DockTopRect;
        DockRect.Left := 0;
        DockRect.Right := ClientWidth;
        DockRect.Bottom := ClientHeight div 2;
      end
    else
      if PtInRect(DockRightRect, MousePos) then
        begin
          Result := alRight;
          DockRect := DockRightRect;
          DockRect.Left := ClientWidth div 2;
        end
      else
        if PtInRect(DockBottomRect, MousePos) then
          begin
            Result := alBottom;
            DockRect := DockBottomRect;
            DockRect.Left := 0;
            DockRect.Right := ClientWidth;
            DockRect.Top := ClientHeight div 2;
         end
        else
          if PtInRect(DockCenterRect, MousePos) then
          begin
            Result := alClient;
            DockRect := DockCenterRect;
          end;
  if Result = alNone then Exit;

  //DockRect is in screen coordinates.
  DockRect.TopLeft := ClientToScreen(DockRect.TopLeft);
  DockRect.BottomRight := ClientToScreen(DockRect.BottomRight);
end;

procedure TDockableForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  //the action taken depends on how the form is docked.

  if (HostDockSite is TConjoinDockHost) then
  begin
    //remove the form's caption from the conjoin dock host's caption list
    TConjoinDockHost(HostDockSite).UpdateCaption(Self);

    //if we're the last visible form on a conjoined form, hide the form
    if HostDockSite.VisibleDockClientCount <= 1 then
      HostDockSite.Hide;
  end;

  //if docked to a panel, tell the panel to hide itself. If there are other
  //visible dock clients on the panel, it ShowDockPanel won't allow it to
  //be hidden
  if (HostDockSite is TPanel) then
    MainForm.ShowDockPanel(HostDockSite as TPanel, False, nil);

  Action := caHide;
end;

procedure TDockableForm.CMDockClient(var Message: TCMDockClient);
var
  ARect: TRect;
  DockType: TAlign;
  Host: TForm;
  Pt: TPoint;
begin
  //Overriding this message allows the dock form to create host forms
  //depending on the mouse position when docking occurs. If we don't override
  //this message, the form will use VCL's default DockManager.

  //NOTE: the only time ManualDock can be safely called during a drag
  //operation is we override processing of CM_DOCKCLIENT.

  if Message.DockSource.Control is TDockableForm then
  begin

    //Find out how to dock (Using a TAlign as the result of ComputeDockingRect)
    Pt.x := Message.MousePos.x;
    Pt.y := Message.MousePos.y;
    DockType := ComputeDockingRect(ARect, Pt);

    //if we are over a dockable form docked to a panel in the
    //main window, manually dock the dragged form to the panel with
    //the correct orientation.
    if (HostDockSite is TPanel) then
    begin
      Message.DockSource.Control.ManualDock(HostDockSite, nil, DockType);
      Exit;
    end;

    //alClient => Create a TabDockHost and manually dock both forms to the PageControl
    //owned by the TabDockHost.
    if DockType = alClient then
    begin
      Host := TTabDockHost.Create(Application);
      Host.BoundsRect := Self.BoundsRect;
      Self.ManualDock(TTabDockHost(Host).PageControl1, nil, alClient);
      Message.DockSource.Control.ManualDock(TTabDockHost(Host).PageControl1, nil, alClient);
      Host.Visible := True;
    end
    //if DockType <> alClient, create the ConjoinDockHost and manually dock both
    //forms to it. Be sure to make dockable forms non-dockable when hosted by
    // ConjoinDockForm, since it is using the VCL default DockManager.
    else begin
      Host := TConjoinDockHost.Create(Application);
      Host.BoundsRect := Self.BoundsRect;
      Self.ManualDock(Host, nil, alNone);
      Self.DockSite := False;
      Message.DockSource.Control.ManualDock(Host, nil, DockType);
      TDockableForm(Message.DockSource.Control).DockSite := False;
      Host.Visible := True;
    end;
  end;
end;

procedure TDockableForm.FormShow(Sender: TObject);
begin
  if HostDockSite is TConjoinDockHost then
    TConjoinDockHost(HostDockSite).UpdateCaption(nil);
  if MainForm.skindata1.active then
     MainForm.skindata1.skinform(handle);
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99精品黄色片免费大全| 欧美日韩三级一区| 欧美另类videos死尸| 欧美成人在线直播| 亚洲欧美偷拍三级| 日韩激情av在线| 9i在线看片成人免费| 精品久久久三级丝袜| 亚洲一区二区三区四区在线观看 | 国产精品一二三四| 欧美综合一区二区| 国产精品久久久久影院亚瑟 | 精品国产一区二区三区av性色| 中文字幕在线免费不卡| 久久国产精品99精品国产| 在线看日本不卡| 国产拍揄自揄精品视频麻豆| 麻豆91在线观看| 欧美欧美欧美欧美首页| 国产精品午夜免费| 激情综合网av| 制服.丝袜.亚洲.中文.综合| 亚洲免费看黄网站| 91麻豆国产自产在线观看| 国产欧美综合在线观看第十页| 另类小说色综合网站| 欧美日韩国产一区| 亚洲国产欧美在线| 欧美高清激情brazzers| 亚洲一区二区在线观看视频| 91免费国产在线观看| 亚洲欧美福利一区二区| 972aa.com艺术欧美| 1区2区3区精品视频| 成人av中文字幕| 中文字幕佐山爱一区二区免费| 国产iv一区二区三区| 久久久久久久综合| 国产一区二区三区四| 国产色婷婷亚洲99精品小说| 韩国理伦片一区二区三区在线播放 | 蜜乳av一区二区| 欧美一级二级在线观看| 久久成人18免费观看| 2020国产精品| 丁香五精品蜜臀久久久久99网站| 中文字幕欧美日韩一区| 成人av影视在线观看| 亚洲人成7777| 欧美日韩一区二区在线视频| 日本vs亚洲vs韩国一区三区二区 | 在线日韩一区二区| 日韩成人av影视| 久久影视一区二区| 成人aa视频在线观看| 亚洲国产一区二区三区| 日韩精品在线网站| 成人av免费观看| 天天色图综合网| 国产欧美日韩精品a在线观看| av一本久道久久综合久久鬼色| 一区二区三区在线高清| 欧美欧美欧美欧美| 久久精品国产**网站演员| 亚洲国产精品av| 一本久道中文字幕精品亚洲嫩| 日韩国产精品久久| 亚洲国产精华液网站w| 欧洲一区二区av| 麻豆精品一区二区| 中文字幕日韩一区| 欧美一区二区三区免费大片| 国产精品一区二区久久不卡| 亚洲黄色性网站| 久久综合久久综合久久| 91视频国产资源| 极品少妇xxxx精品少妇| 亚洲高清免费一级二级三级| 国产精品三级久久久久三级| 欧美三级在线视频| 成人精品视频网站| 蜜臀久久99精品久久久久宅男 | 久久久久久一二三区| 色婷婷精品久久二区二区蜜臀av| 韩国v欧美v亚洲v日本v| 亚洲一区二区三区中文字幕| 国产精品理论片| 日韩三级电影网址| 色www精品视频在线观看| 韩国成人精品a∨在线观看| 亚洲五月六月丁香激情| 国产精品电影院| 久久精品亚洲乱码伦伦中文| 欧美一区二区三区婷婷月色| 欧洲激情一区二区| 国产成人免费9x9x人网站视频| 日韩电影在线免费| 亚洲综合另类小说| 中文字幕一区av| 日本一区二区三区电影| 日韩网站在线看片你懂的| 在线视频国内一区二区| 91女神在线视频| 成人高清av在线| 懂色av一区二区三区免费观看 | 亚洲一区二区三区四区不卡 | 久久理论电影网| 日韩一区二区精品在线观看| 欧美日韩成人激情| 欧美日韩精品欧美日韩精品| 色哟哟欧美精品| 91啪亚洲精品| 一本大道久久a久久综合婷婷| 99免费精品在线观看| www.一区二区| 99久久婷婷国产综合精品电影| 不卡视频免费播放| 成人激情综合网站| 成人精品小蝌蚪| 91婷婷韩国欧美一区二区| 91麻豆精东视频| 在线日韩一区二区| 51精品视频一区二区三区| 91精品国产欧美一区二区18| 欧美电影在哪看比较好| 777色狠狠一区二区三区| 欧美一区二区免费| 精品国产3级a| 国产精品免费视频网站| 日韩毛片视频在线看| 伊人性伊人情综合网| 一区二区三区中文字幕精品精品| 亚洲精品中文在线观看| 洋洋av久久久久久久一区| 亚洲成在线观看| 免费在线观看成人| 国产一区二区伦理片| 91在线观看免费视频| 色狠狠色狠狠综合| 在线不卡的av| 精品成人在线观看| 国产精品久久久久久久久免费丝袜| 亚洲欧美激情插| 麻豆国产精品一区二区三区| 国产aⅴ综合色| 欧美三级日韩在线| 国产亚洲精品久| 亚洲一级二级三级| 久久国产精品99久久久久久老狼| 国产成人av自拍| 欧美色涩在线第一页| 久久尤物电影视频在线观看| 一区在线观看免费| 麻豆91免费观看| 色老汉一区二区三区| 精品日韩欧美在线| 亚洲美女电影在线| 美女视频黄 久久| 99re成人精品视频| 欧美成人性福生活免费看| 国产精品国产自产拍在线| 精品中文av资源站在线观看| 99精品国产99久久久久久白柏| 91精品国产综合久久久久| 中文字幕欧美国产| 日韩精品免费专区| 成人动漫在线一区| 精品久久久久久久久久久久久久久| 亚洲国产视频在线| 91欧美激情一区二区三区成人| 一区二区三区日韩欧美| 欧美极品另类videosde| 亚洲成av人片一区二区| 福利电影一区二区| 日韩视频一区二区三区| 亚洲综合在线第一页| 国产福利精品导航| 日韩女优av电影在线观看| 亚洲精品网站在线观看| 国产91丝袜在线播放0| 日韩欧美色电影| 亚洲电影欧美电影有声小说| 色综合久久中文综合久久牛| 久久久91精品国产一区二区精品| 婷婷综合五月天| 91玉足脚交白嫩脚丫在线播放| 久久精品一区二区三区不卡 | 精品福利av导航| 日本欧美在线看| 欧美日韩免费电影| 亚洲欧美色图小说| 成人av在线影院| 国产精品久久精品日日| 国产成人免费视频一区| 久久综合丝袜日本网| 老司机午夜精品| 精品久久五月天| 日本视频在线一区| 欧美一区二区三区四区在线观看| 日韩在线播放一区二区|