Foxtable(狐表)用户栏目专家坐堂 → 请问在foxtable中怎么做出来Winamp那种停靠窗口?


  共有9691人关注过本帖树形打印复制链接

主题:请问在foxtable中怎么做出来Winamp那种停靠窗口?

帅哥哟,离线,有人找我吗?
迷狐
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2054 威望:0 精华:1 注册:2012/5/24 16:00:00
请问在foxtable中怎么做出来Winamp那种停靠窗口?  发帖心情 Post By:2012/11/21 9:41:00 [只看该作者]

做出一个主窗口,再做一个窗口怎样与之停靠? 并且在主窗口移动时,子窗口也跟随移动? 


 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/21 9:48:00 [只看该作者]

 Winamp是什么来的?

 回到顶部
帅哥哟,离线,有人找我吗?
迷狐
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2054 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/21 9:55:00 [只看该作者]

即千千静听
图片点击可在新窗口打开查看此主题相关图片如下:qq截图20121121095351.gif
图片点击可在新窗口打开查看

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/21 10:12:00 [只看该作者]

 foxtable里,停靠是固定的。千千静听的停靠应该也是固定的,全部窗口向父窗口左边停靠(主窗口透明),移动第一个窗口的时候,移动主窗口。

 回到顶部
帅哥哟,离线,有人找我吗?
迷狐
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2054 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/21 11:09:00 [只看该作者]

没有头绪,能够示例吗    
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

[此贴子已经被作者于2012-11-21 11:13:34编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/21 12:11:00 [只看该作者]

 狐表弄起来会很麻烦……我就不弄了。下面简单模拟一下,实际不是这样做的。

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table




 回到顶部
帅哥哟,离线,有人找我吗?
paullqxp
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:二尾狐 帖子:518 积分:4773 威望:0 精华:1 注册:2011/11/23 20:48:00
  发帖心情 Post By:2012/11/21 12:34:00 [只看该作者]

楼主还在用WINAMP,实属不易,勾起我很多回忆

小林的示例并非楼主所需

他是希望主窗体移动时,附属窗体也能跟随移动,小林的是打开附属窗体时,附属窗体的停靠位置为挨着主窗体,并不跟随移动


 回到顶部
帅哥哟,离线,有人找我吗?
迷狐
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2054 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/21 12:58:00 [只看该作者]

开始用了Forms("窗口1").Left总是为零,原来还要加Baseform才能得到值图片点击可在新窗口打开查看
图片点击可在新窗口打开查看感谢,加了一个计划管理,实现了停靠
If Forms("窗口1").opened and Forms("窗口2").opened Then
Forms("窗口2").Baseform.Left = Forms("窗口1").Baseform.right + 10
Forms("窗口2").BaseForm.Top = Forms("窗口1").Baseform.Top
End If

能有更好的方法吗?
[此贴子已经被作者于2012-11-21 13:17:43编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
lin_hailun
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:6708 积分:34304 威望:0 精华:11 注册:2012/8/18 23:10:00
  发帖心情 Post By:2012/11/21 14:11:00 [只看该作者]

以下是引用迷狐在2012-11-21 12:58:00的发言:
开始用了Forms("窗口1").Left总是为零,原来还要加Baseform才能得到值图片点击可在新窗口打开查看
图片点击可在新窗口打开查看感谢,加了一个计划管理,实现了停靠
If Forms("窗口1").opened and Forms("窗口2").opened Then
Forms("窗口2").Baseform.Left = Forms("窗口1").Baseform.right + 10
Forms("窗口2").BaseForm.Top = Forms("窗口1").Baseform.Top
End If

能有更好的方法吗?
[此贴子已经被作者于2012-11-21 13:17:43编辑过]

有,但是麻烦,要添加窗体移动事件。

 回到顶部
帅哥哟,离线,有人找我吗?
迷狐
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:童狐 帖子:228 积分:2054 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/22 16:42:00 [只看该作者]

从网上搜到,都不能实现效果,请看看该如何改?图片点击可在新窗口打开查看
第一种方法
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目1.table

采用API ,移动窗口后不能实现跟随移动效果 后来发现先移动窗口,然后在窗口内某控件快速向上按下鼠标另一窗口才移动
先在全局代码中定义
Public Declare Sub ReleaseCapture Lib "user32" ()
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Long) As Long
Public Const HTCAPTION = 2
Public Const WM_NCLBUTTONDOWN = &HA1
再在窗口1中 MouseMove事件加入:
Dim lngReturnValue As Long
If e.Button = MouseButtons.Left Then
    ReleaseCapture
    lngReturnValue = SendMessage(e.Form.BaseForm.Handle,WM_NCLBUTTONDOWN, HTCAPTION,0&)
    If Forms("窗口2").opened Then
        Forms("窗口2").Baseform.Left = e.Form.Baseform.right
        Forms("窗口2").BaseForm.Top =  e.Form.BaseForm.Top
    End If
End If

第二种方法
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:管理项目2.table

只能实现在窗体1中按任意控件移动鼠标,窗体2能够跟随移动
先在全局代码中定义Public  px,py As Integer
再在窗口1中 MouseDown事件加入:
px=e.x
py=e.y
再在窗口1中 MouseDown事件加入:
If Forms("窗口1").opened And Forms("窗口2").opened Then
If px = e.X And py = e.Y Then
Return
Else
If e.Button = MouseButtons.Left Then
e.Form.Baseform.Left = e.Form.Baseform.Left + e.x - px
e.Form.Baseform.Top  = e.Form.BaseForm.Top + e.y - py

Forms("窗口2").Baseform.Left = e.Form.Baseform.right
Forms("窗口2").BaseForm.Top =  e.Form.BaseForm.Top
End If
End If
End If


 回到顶部