Foxtable(狐表)用户栏目专家坐堂 → 在窗体上加入表格的尺寸问题


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

主题:在窗体上加入表格的尺寸问题

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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
在窗体上加入表格的尺寸问题  发帖心情 Post By:2016/7/21 8:53:00 [只看该作者]


图片点击可在新窗口打开查看此主题相关图片如下:capture.png
图片点击可在新窗口打开查看
如图这样的窗体上的表格。

由于尺寸的问题,边际总会有一些灰色的条。

 

我的问题是怎么消除这个条?

 

第二,考虑到字段的长度,用户要求最好能左右手动调整表的尺寸,但是左上角的距离不变(就是位置不变)

这个怎么设置?


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


加好友 发短信
等级:狐神 帖子:5015 积分:25363 威望:0 精华:0 注册:2015/8/18 9:21:00
  发帖心情 Post By:2016/7/21 9:05:00 [只看该作者]

1.参考http://www.foxtable.com/webhelp/scr/2380.htm

2.表的大小手动调整比较麻烦,最好是调整列宽。或者通过窗口布局进行控制

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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/7/21 10:25:00 [只看该作者]

这个命令是考齐右侧的边际,当表格宽度小于外框的时候,把最后一列扩宽。

 

当表格大于外框的时候则不生效。

 

貌似表格的尺寸被限定在控件的宽度范围了。控件的范围可以手动调整么

我找到了以前的一个帖子,貌似稍微修改下代码就可以调整宽度

 

If e.Button = MouseButtons.Left Then
    Select Case e.sender.name
        Case "Button1","Button2","Button3" '列出要移动的控件的名称
            Dim lbl As WinForm.Label = e.Form.Controls("info")
            Dim ctl As WinForm.Control  = e.sender
            If lbl.text = "" Then
                Return
            End If
            Dim vals() As String = lbl.text.Split("|")
            If ctl.name <> vals(0) Then
                Return
            End If
            Dim x As Integer = e.x - vals(3)
            Dim y As Integer = e.y - vals(4)
            ctl.SetBounds(ctl.Left + x ,ctl.Top + y,ctl.Width,ctl.Height)
    End Select
End If

 

If e.Button = MouseButtons.Left Then
    Select Case e.sender.name
        Case "Button1","Button2","Button3" '列出要移动的控件的名称
            Dim lbl As WinForm.Label = e.Form.Controls("info")
            With e.sender
                lbl.text = .name & "|" & .Left & "|" & .Top & "|" & e.x & "|" & e.y
            End With
    End Select
End If


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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/7/21 10:29:00 [只看该作者]

有一个不明白的地方就是:

这两段代码一个是在mouse move触发,一个是在mouse down触发。

里面都用到了LBL的代表鼠标位置变量。

这个在不同程序里面的变量可以传递?


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 10:32:00 [只看该作者]

 用全局变量var就可以在不同事件里使用

 

 http://www.foxtable.com/webhelp/scr/0325.htm

 


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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/7/21 10:35:00 [只看该作者]

这个是狐表大大发的分享程序,我查了下,没有定义全局变量。

我没仔细看,其实他是把这个位置保存在一个文本里面

 


图片点击可在新窗口打开查看此主题相关图片如下:capture2.png
图片点击可在新窗口打开查看

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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 10:36:00 [只看该作者]

这个就是啊

 

vars(3)、vars(4)

[此贴子已经被作者于2016/7/21 10:50:32编辑过]

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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/7/21 10:49:00 [只看该作者]

没有吧,Dim vals() As String = lbl.text.Split("|")
这里没有定义全局变量啊


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


加好友 发短信
等级:贵宾 帖子:39310 积分:196782 威望:0 精华:1 注册:2015/4/25 9:23:00
  发帖心情 Post By:2016/7/21 10:51:00 [只看该作者]

哦,那是人家把值保存在了 lbl 控件里面了

 

lbl.text = .name & "|" & .Left & "|" & .Top & "|" & e.x & "|" & e.y


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


加好友 发短信
等级:四尾狐 帖子:967 积分:8517 威望:0 精华:0 注册:2015/8/12 16:28:00
  发帖心情 Post By:2016/7/21 11:26:00 [只看该作者]

我适当修改了下代码,表格可以随意调整宽度了:

    Select Case e.sender.name
        Case "Panel1" '列出要移动的控件的名称
            Dim lbl As WinForm.Label = e.Form.Controls("info")
            Dim ctl As WinForm.Control  = e.Sender
            Dim ctl2 As WinForm.Control=e.Form.Controls("Table2")
            If lbl.text = "" Then
                Return
            End If
            Dim vals() As String = lbl.text.Split("|")
            If ctl.name <> vals(0) Then
                Return
            End If
            Dim x As Integer = e.x - vals(3)+590
            Dim y As Integer = e.y - vals(4)+590
           
            ctl.SetBounds(ctl.Left  ,ctl.Top , x+90 ,ctl.Height) 
            ctl2.SetBounds(ctl2.Left  ,ctl2.Top , x ,ctl2.Height)
    End Select
End If

 

 


图片点击可在新窗口打开查看此主题相关图片如下:capture2.png
图片点击可在新窗口打开查看

 

注意表格是不可以调整宽度,因为单机会变成选择单元格。所以我在外面加了一个panel,点击表格外面的框就可以调整宽度


图片点击可在新窗口打开查看此主题相关图片如下:capture2.png
图片点击可在新窗口打开查看

图片点击可在新窗口打开查看此主题相关图片如下:capture.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2016/7/21 11:27:30编辑过]

 回到顶部