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


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

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

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


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

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


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


加好友 发短信
等级:童狐 帖子:228 积分:2060 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/21 9:55:00 [显示全部帖子]

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

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


加好友 发短信
等级:童狐 帖子:228 积分:2060 威望:0 精华:1 注册:2012/5/24 16:00:00
  发帖心情 Post By:2012/11/21 11:09:00 [显示全部帖子]

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

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

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


加好友 发短信
等级:童狐 帖子:228 积分:2060 威望: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编辑过]

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


加好友 发短信
等级:童狐 帖子:228 积分:2060 威望: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


 回到顶部