设为首页】 【加入收藏】 【网站地图】 【商品折扣
娱乐一生 娱乐明星
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
首页  |  java  |  .NET  |  C/C++  |  网页技术  |  php  |  asp  |  delphi  |  VC  |  VB开发  |  游戏开发  |  软件工程  |  Power Builder  |  Linux开发  |  Windows开发技巧
当前位置:首页 >> delphi >> 在Delphi7中实现停靠功能_Delphi教程_src119.com

在Delphi7中实现停靠功能_Delphi教程_src119.com -

在Delphi7中实现停靠功能 我们在使用Delphi7开发应用系统过程中经常需要使用子窗口在主窗口上停靠的功能,如果对这一部分不熟练时,通常会到CSDN等网站寻找各种相关的控件,或者参考Delphi自带的例程Docking,下面我给大家介绍一种能够凑乎用的简便方法。 1、在主窗口中添加四个Panel和四个 litter,设置对齐上下左右四边。
2、设定四个Panel的属性DockSite属性为True。
3、左右Panel添加 OnDockDrop、OnDockOver、OnUnDock事件如下:
procedure TfrmMain. lLeftUnDock(Sender: TObject; Client: TControl;
NewTarget: TWinControl; var Allow: Boolean);
begin
  if (Sender as TPanel).VisibleDockClientCount = 1 then
  begin
  (Sender as TPanel).Width := 1;
  end;
end;   procedure TfrmMain. lLeftDockDrop(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer);
begin
  (Sender as TPanel).Width := max(source.Control.UndockWidth,(Sender as TPanel).Width);
end;   procedure TfrmMain. lLeftDockOver(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer; State: TDragState;
  var Accept: Boolean);
begin
  if State = dsDragEnter then
  begin
  (Sender as TPanel).Width := max(Source.Control.UndockWidth, (Sender as TPanel).Width);
  end
  else
  begin
  if State = dsDragLeave then
  begin
  (Sender as TPanel).Width := 1;
  end;
  end;
end;

左右Panel响应事件代码相同。 4、上下Panel添加 OnDockDrop、OnDockOver、OnUnDock事件如下:
procedure TfrmMain. lBottomUnDock(Sender: TObject; Client: TControl;
  NewTarget: TWinControl; var Allow: Boolean);
begin
  if (Sender as TPanel).DockClientCount = 1 then
  begin
  (Sender as TPanel).Height := 1;
  end;
end;
  procedure TfrmMain. lBottomDockDrop(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer);
begin
  (Sender as TPanel).Height := max(source.Control.UndockHeight,(Sender as TPanel).Height);
end;   procedure TfrmMain. lBottomDockOver(Sender: TObject;
  Source: TDragDockObject; X, Y: Integer; State: TDragState;
  var Accept: Boolean);
begin
  if State = dsDragEnter then
  begin
  (Sender as TPanel).Height := max(Source.Control.UndockHeight, (Sender as TPanel).Height);
  end
  else
  begin

  if State = dsDragLeave then
  begin
  (Sender as TPanel).Height := 1;
  end;
  end;
end;

上下两个Panel响应事件代码相同。 5、创建新的窗体用于停靠到主窗体。
6、设置新窗体DragKind为dkDock,DragMode为dmAutomatic。
7、在新窗体OnClose事件中添加如下代码:
  if self.HostDockSite < gt; nil then
  begin
  self.ManualDock(nil);
  end;
  Action := caHide;
8、设置新窗体不自动创建。
9、在主创体中创建新窗体并显示。记住:用Show,不要用ShowModal。 这种方法是一个不很规范的方法,如果需要更细致的控制,最好参考Delphi的Docking示例。如果将此例中的某个Panel更改为TabControl或者PageConrol,你可以得到更好的效果,不过代码需要稍微变化,有兴趣的哥们可以试试。



 

娱乐图摘

更多 >>

靓丽清纯美女meimei

美女私房全裸照
导演劝女演员脱衣服(视频)

大胆火辣人体艺术写真(图)

黑丝妹妹热辣诱惑-丝袜美女妹妹

PLMM 漂亮妹妹图集-妹妹图库

全球美女图库-美女集中营

52MM 我爱漂亮妹妹-制服妹妹诱惑

图王图库-世界美女明星图片资料库
美女写真集锦

激情两性-解密性生活
浴室MM湿身内衣诱惑
邻家小妹洗澡被偷拍(视频)

热点文章

更多

· 使用MIDAS访问远程Access数据库_Delphi教程_
· Delphi2005学习笔记4——再谈NameSpace和D
· 多层数据库开发十二:使用数据控件_Delphi教程_src1
· 在Delphi中自己建立交叉表_Delphi教程_src11
· 用Delphi设计代理服务器_Delphi教程_src119
· Delphi开发单机瘦数据库程序要点_Delphi教程_sr
· 拖拉打开文件_Delphi教程_src119.com
· 搜索字符串在流中的位置_Delphi教程_src119.co
· 用Delphi编写Win2000服务程序_Delphi教程_
· 創建一個簡單的"專家"_Delphi教程

热点文章

更多