CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
英特尔®游戏设计大赛100美元现金周周送 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  Windows SDK/API

QQ那面板怎么做的啊?

楼主Response_chen(俺村俺最丑)2003-06-03 15:41:39 在 Delphi / Windows SDK/API 提问

 
  是不是有专门的控件啊!  
   
  我想做个那样的东东  
   
  问题点数:50、回复次数:6Top

1 楼yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜)回复于 2003-06-03 15:45:19 得分 0

我做了类似的东西,功能还不完善,我有源代码,你要不要?Top

2 楼Response_chen(俺村俺最丑)回复于 2003-06-03 15:51:40 得分 0

要啊!   谢  
   
  发给俺吧!  
   
  response_chen@msn.comTop

3 楼yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜)回复于 2003-06-03 15:51:44 得分 0

主要函数在这里  
    ABtnInfo   =   Record  
          Button:   TButton;  
      end;  
      BtnInfoArr   =   Array   of   ABtnInfo;  
   
   
  function   TForm1.BtnUnderTv(Button:   TButton;   TreeView:   TTreeView):   boolean;  
  begin  
      Result   :=   (Button.Top   >   TreeView.Top);//top越大,越在下面  
  end;{判断button是否在TreeView在下面}  
   
  function   TForm1.GetBtnInfo(Button:   TButton;   TreeView:   TTreeView;  
      Parent_Panel:   TPanel):   BtnInfoArr;  
  {   Get   Informations   of   the   buttons   that   between   Button   and   TreeView   }  
  var  
      i,   j:   integer;  
      MinTop,   MaxTop:   integer;  
      pABtnInfo   :   ^ABtnInfo;  
  begin  
      if   Button.Top   <   TreeView.Top   then   begin  
          MinTop   :=   Button.Top;  
          MaxTop   :=   TreeView.Top;  
      end  
      else   begin  
          MinTop   :=   TreeView.Top;  
          MaxTop   :=   Button.Top;  
      end;  
   
      j   :=   0;  
      for   i   :=   0   to   self.ComponentCount   -   1   do  
          if   (self.Components[i]   is   TButton)and  
              (TButton(self.Components[i]).Parent   =   Parent_Panel)   then  
              if   (TButton(self.Components[i]).Top   <   MaxTop)  
                  and(TButton(self.Components[i]).Top   >   MinTop)   then  
                      Inc(j);  
           
      SetLength(Result,   j);  
   
      j   :=   0;  
      for   i   :=   0   to   self.ComponentCount   -   1   do  
          if   (self.Components[i]   is   TButton)and  
              (TButton(self.Components[i]).Parent   =   Parent_Panel)   then  
              if   (TButton(self.Components[i]).Top   <   MaxTop)  
                  and(TButton(self.Components[i]).Top   >   MinTop)   then  
              begin  
                  new(pABtnInfo);  
                  pABtnInfo^.Button   :=   TButton(self.Components[i]);  
                  Result[j]   :=   pABtnInfo^;  
                  Dispose(pABtnInfo);  
                  Inc(j);  
              end;  
  end;  
   
   
  procedure   TForm1.TreeViewMoveTo(TreeView:   TTreeView;   Button:   TButton;  
      Parent_Panel:   TPanel);  
  var  
      i,   Len:   integer;  
      myArr   :   BtnInfoArr;  
  begin  
      myArr   :=   GetBtnInfo(Button,   TreeView,   Panel1);  
      Len   :=   Length(MyArr);  
   
      if   Len   <>   0   then  
   
          if   BtnUnderTv(Button,   TreeView)   then   begin    
              TreeView.Top   :=   TreeView.Top   +   ((Len   +   1)*   Button.Height);  
              for   i   :=   0   to   Len   -   1   do  
                  myArr[i].Button.Top   :=   myArr[i].Button.Top    
                      -   TreeView.Height;  
              Button.Top   :=   Button.Top   -   TreeView.Height;  
          end  
          else   begin          
              TreeView.Top   :=   TreeView.Top   -   (Len   *   Button.Height);  
              for   i   :=   0   to   Len   -   1   do  
                  myArr[i].Button.Top   :=   myArr[i].Button.Top   +   TreeView.Height;  
          end  
   
      else   begin//中间没有间隔  
          //Button刚刚在TreeView的下面  
          if   (TreeView.Top   +   TreeView.Height   =   Button.Top)   then   begin  
              TreeView.Top   :=   TreeView.Top   +   Button.Height;  
              Button.Top   :=   Button.Top   -   TreeView.Height;  
          end;  
      end;  
   
      //Button刚刚在TreeView的上面  
      if   (Button.Top   +   Button.Height   =   TreeView.Top)   then   begin  
          for   i   :=   0   to   self.ComponentCount   -   1   do  
              if   (self.Components[i]   is   TTreeView)  
                  and(TTreeView(self.Components[i]).Parent   =   Parent_Panel)   then  
              begin  
                  TTreeView(self.Components[i]).Visible   :=   false;  
                  TTreeView(self.Components[i]).Top   :=   TreeView.Top;  
              end;  
          TreeView.Visible   :=   true;  
      end;  
  end;  
   
  procedure   TForm1.btn1Click(Sender:   TObject);  
  begin  
      TreeViewMoveTo(tv1,   btn1,   Panel1);  
  end;Top

4 楼yoic(我是一棵菠菜,菜,菜,菜,菜,菜,菜)回复于 2003-06-03 15:53:37 得分 50

我的程序很乱,不好意思发给你,主要实现的代码在上面,希望对你有用,Top

5 楼hameizi(梅子)回复于 2003-06-03 16:32:11 得分 0

markTop

6 楼qxj(己所不欲,勿施于人;送人玫瑰,手有余香!)回复于 2003-06-03 16:40:45 得分 0

outlookbarTop

相关问题

  • QQ的面板怎么实现的?
  • QQ面板控件
  • 怎样做像qq那样的面板,有源码最好了
  • 如何才能像QQ面板那样啊
  • 续 QQ面板隐藏功能实现
  • 哪里有QQ面板的控件?
  • 隐藏QQ 面板部分内容
  • 那位大侠有用.NET实现的QQ如下所示的面板菜单,给给思路也行!!!!
  • 找不到控制面板怎么办?
  • 怎么做一个浮动面板

关键词

  • top
  • treeview
  • ttreeview
  • abtninfo
  • button
  • myarr
  • tbutton
  • self
  • height
  • begin

得分解答快速导航

  • 帖主:Response_chen
  • yoic

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo