乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • docksite 停靠

       一路狂奔141 2014-05-05

       

      在查看代碼時(shí),對(duì)docksite這個(gè)屬性很好奇,百度搜了很久,發(fā)現(xiàn)了一個(gè)很好玩的東西。關(guān)于如何制作類似工具欄的東東,可以把它拖出來(lái)作為浮動(dòng)工具條。還有可以把它拖到窗體的左邊,形成豎條工具條。

      大體的內(nèi)容如下:

      在Delphi中只要是從TWinControl繼承的控件都支持被???如上面的LeftDockPanel),也就是有DockSite這個(gè)屬性;所有從TControl繼承的控件都支持???如上面的DockableForm),也就是有DragKind這個(gè)屬性.所以支持被??康目丶贾С滞??,支持停靠的控件不一定支持被??浚览砗芎?jiǎn)單,因?yàn)門WinControl繼承于TControl。

      基本的步驟:
      在TWinControl類中有一個(gè)DockSite屬性(boolean),它的作用是是否允許別的控件??吭谒纳厦妫赥Control類中有一個(gè)DragKind屬性,如果要這個(gè)控件能停靠在別的控件上,就把DragKind屬性設(shè)成dkDock。就這么簡(jiǎn)單,只要設(shè)置一下屬性,一個(gè)支持停靠的程序就完成了。

      假定主窗口左邊可以停靠,在主窗口上放一個(gè)Align屬性為alLeft的Panel(可用其他能被??康目丶?,取名為L(zhǎng)eftDockPanel,寬度為0,DockSite屬性為True。在它右邊再放一個(gè)TSplitter,取名為L(zhǎng)eftSplitter,Align屬性為alLeft。建一個(gè)窗體,取名叫DockableForm,DragKind屬性設(shè)成dkDock,DragMode屬性設(shè)為dmAutomatic(自動(dòng)???。

      上面操作完成之后,并不能達(dá)到想要的效果,??康拇绑w停靠進(jìn)去后就不見(jiàn)了。這與其觸發(fā)的事件有關(guān)系,分別為:
      OnDockOver(Sender:   TObject;   Source:   TDragDockObject;   X,   Y:   Integer;   State:   TDragState;   var   Accept:   Boolean);
      OnDockDrop(Sender:   TObject;   Source:   TDragDockObject;   X,   Y:   Integer);
      OnGetSiteInfo(Sender:   TObject;   DockClient:   TControl;   var   InfluenceRect:   TRect;   MousePos:   TPoint;   var   CanDock:    Boolean);
      OnStartDock(Sender:   TObject;   var   DragObject:   TDragDockObject);
      OnEndDock(Sender,   Target:   TObject;   X,   Y:   Integer);
      OnUnDock(Sender:   TObject;   Client:   TControl;   NewTarget:   TWinControl;   var   Allow:   Boolean);

      OnDockOver事件是控制??看绑w的預(yù)覽位置;OnDockDrap事件是控制停靠窗體的最終位置;OnGetSiteInfo是詢問(wèn)是否可以停靠;OnStartDock是停靠開(kāi)始,OnEndDock是??拷Y(jié)尾,OnUnDock是不???也就是被拖出來(lái)時(shí))。


      OnDockOver是在??靠丶?DockableForm)掠過(guò)被??靠丶?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)離開(kāi),拖動(dòng)移動(dòng);Accept是是否同意??康囊馑?。OnDockOver事件主要作用是控制停靠窗體的預(yù)覽位置。在該方法中添加如下代碼:
      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;

      OnDockDrop是在停靠窗體進(jìn)入被??靠丶r(shí)發(fā)生的,作用是控制停靠窗體的最終位置。參數(shù)和OnDockOver差不多。在該方法中添加如下代碼:
      begin
        LeftDockPanel.Width := ClientWidth div 3;
        LeftSplitter.Left := LeftDockPanel.Width+LeftSplitter.Width;
      end;

      添加了以上代碼之后,當(dāng)我們把??看绑w關(guān)閉時(shí),會(huì)發(fā)現(xiàn)裝載DockableForm的LeftDockPanel不能還原,此時(shí),可以在DockableForm的OnClose事件中,把LeftDockPanel的寬度設(shè)為0。在OnClose事件中添加如下代碼:
      begin 
        MainForm.LeftDockPanel.Width := 0;
        Action := caHide;
      end;

      ??看绑w設(shè)置完成。。同理可以在主窗體的其他位置都實(shí)現(xiàn)這個(gè)功能。

      OnGetSiteInfo是在窗體移動(dòng)時(shí)觸發(fā)的,所以經(jīng)常觸發(fā),它里面的DockClient就是TDockableForm。有一個(gè)引用參數(shù)叫CanDock,和OnDockOver中的Accept差不多,都是詢問(wèn)是否允許???。在這里可以不寫,CanDock默認(rèn)就是True,也可以寫上CanDock := DockClient is TDockableForm;

      OnStartDock,OnEndDock,OnUnDock這三個(gè)事件都是在DockableForm上面有用,意思分別是??块_(kāi)始,??拷Y(jié)尾,不???。OnStartDock和OnEndDock經(jīng)常會(huì)被觸發(fā),OnUnDock只在停靠窗體變成浮動(dòng)時(shí)觸發(fā)。


      什么時(shí)候裝下Delphi驗(yàn)證。。\(^o^)/~

       

       

       


        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多