以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  在窗体上加入表格的尺寸问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=87841)

--  作者:lur320
--  发布时间:2016/7/21 8:53:00
--  在窗体上加入表格的尺寸问题


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

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

 

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

 

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

这个怎么设置?


--  作者:Hyphen
--  发布时间:2016/7/21 9:05:00
--  
1.参考http://www.foxtable.com/webhelp/scr/2380.htm

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

--  作者:lur320
--  发布时间: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
--  发布时间:2016/7/21 10:29:00
--  

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

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

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

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


--  作者:大红袍
--  发布时间:2016/7/21 10:32:00
--  

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

 

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

 


--  作者:lur320
--  发布时间:2016/7/21 10:35:00
--  

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

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

 


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

--  作者:大红袍
--  发布时间:2016/7/21 10:36:00
--  

这个就是啊

 

vars(3)、vars(4)

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

--  作者:lur320
--  发布时间:2016/7/21 10:49:00
--  

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


--  作者:大红袍
--  发布时间:2016/7/21 10:51:00
--  

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

 

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


--  作者:lur320
--  发布时间: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编辑过]