以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  文本显示窗口能否动态绑定到单元格  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=120154)

--  作者:happyft
--  发布时间:2018/6/8 12:35:00
--  文本显示窗口能否动态绑定到单元格

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


如上图设计了一个文本显示框,在表中的doubleclick事件打开文本显示窗口,窗口的afterLoad代码如下:
e.Form.Text = Vars("RemarkCol")  \'根据传递的变量显示不同的窗口标题
Dim tx As WinForm.TextBox = e.Form.Controls("TextBox1")
tx.BindingField = CurrentTable.Name & "." & Vars("RemarkCol")  \'绑定到当前表中的双击列

窗口打开后在表中切换不同的行都可以自动显示双击打开窗口时那列的内容,可以查看或修改,但有个问题是当想显示另外一列的内容时
必须把窗口关掉,重新在另外一列双击再打开,想请教下
能否在窗口打开后切换到不同的单元格时窗口的标题都可以动态显示单元格所在的列,文本窗口的内容也可以动态绑定到选中的单元格,同步显示或修改?
要怎么实现,如果能实现会不会效率很低?

谢谢!



--  作者:有点甜
--  发布时间:2018/6/8 12:38:00
--  

切换不同的单元格,可以用click事件、prepareEdit事件、afterSelChanged事件,动态绑定窗口textbox的字段,不就行了?


--  作者:HappyFt
--  发布时间:2018/6/8 14:02:00
--  
可以了,谢谢,如果想让窗口打开时在屏幕正中央显示而且窗口的顶部与屏幕顶部对齐,要怎么写?
--  作者:有点甜
--  发布时间:2018/6/8 14:11:00
--  
以下是引用HappyFt在2018/6/8 14:02:00的发言:
可以了,谢谢,如果想让窗口打开时在屏幕正中央显示而且窗口的顶部与屏幕顶部对齐,要怎么写?

 

控制窗口的top、left属性,如

 

e.form.baseform.top = 0

e.form.baseform.left = (SysInfo.ScreenWidth-e.form.baseform.width) / 2


--  作者:HappyFt
--  发布时间:2018/6/8 16:35:00
--  
很奇怪,为什么有时会不显示叱?

代码是写在全局表事件prepareEdit、afterSelChanged都试过,有时都会不显示

If Forms("备注浏览器").Opened Then
    Dim c As Col = CurrentTable.Cols(CurrentTable.ColSel)
    Forms("备注浏览器").Text = c.name \'根据传递的变量显示不同的窗口标题
    Dim tx As WinForm.TextBox =  Forms("备注浏览器").Controls("TextBox1")
    tx.BindingField = CurrentTable.name & "." & c.name
End If

--  作者:有点蓝
--  发布时间:2018/6/8 17:30:00
--  
If Forms("备注浏览器").Opened Then
    Dim c As Col = CurrentTable.Cols(CurrentTable.ColSel)
    Forms("备注浏览器").Text = c.name \'根据传递的变量显示不同的窗口标题
    Dim tx As WinForm.TextBox =  Forms("备注浏览器").Controls("TextBox1")
    tx.BindingField = CurrentTable.name & "." & c.name
msgbox(tx.BindingField ) ‘能不能触发’
End If

--  作者:HappyFt
--  发布时间:2018/6/8 17:59:00
--  
能触发



同一个单元格,先点左边规格再去点击下料规格就可以看见,如果先点击过右边的红圈那两列,再去点击下料规格就不显示,也不知道什么原因?
不是很重要,先不管它了,谢谢!

--  作者:有点甜
--  发布时间:2018/6/8 19:44:00
--  

如果还有问题,请做一个例子发上来测试。


--  作者:有点蓝
--  发布时间:2018/6/8 20:37:00
--  
试试这样

If Forms("备注浏览器").Opened Then
    Dim c As Col = CurrentTable.Cols(CurrentTable.ColSel)
    Forms("备注浏览器").Text = c.name \'根据传递的变量显示不同的窗口标题
    Dim tx As WinForm.TextBox =  Forms("备注浏览器").Controls("TextBox1")
tx.BindingField = nothing
tx.text = ""
    tx.BindingField = CurrentTable.name & "." & c.name
End If

--  作者:HappyFt
--  发布时间:2018/6/11 10:57:00
--  
用9楼的代码,效果还是一样,  另外想请教下,双击打开窗口后
  LockBaseMainForm()  \'锁定主界面
    Forms("备注浏览器").Open()
    Forms("备注浏览器").baseform.top = 50
    Forms("备注浏览器").left = (SysInfo.ScreenWidth - Forms("备注浏览器").baseform.width) / 2
    UnLockBaseMainForm()

有时窗口打开时会先在中间显示闪烁一下,才回到指定的位置,感觉不是很好,用了常用的几中防止闪屏的都不行,要怎么办?
有没有办法在Forms("备注浏览器").Open(X,X) 的括号中加上参数控制打开窗口时就显示在指定的位置?