以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]怎样遍历窗口中的RecordGrid  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=99728)

--  作者:jyh7081
--  发布时间:2017/4/25 18:15:00
--  [求助]怎样遍历窗口中的RecordGrid
窗口中有多个RecordGrid,分别为RecordGrid1、RecordGrid2......想遍历后引用。谢谢!
--  作者:有点色
--  发布时间:2017/4/25 18:22:00
--  

方法一:循环所有控件,判断是否为RecordGrid控件。

 

方法二:动态引用

 

for i as integer = 1 to 10

    e.form.controls("recordgrid" & i)

next


--  作者:wyz20130512
--  发布时间:2017/4/25 18:25:00
--  
For Each c As WinForm.Control In e.Form.Controls
    If
 Typeof c Is WinForm.RecordGrid Then \'判断控件是否是记录窗口
        
Dim rg As WinForm.RecordGrid = c \'使用特定类型的变量引用控件
        ...

    End
 If
Next
[此贴子已经被作者于2017/4/25 18:25:12编辑过]

--  作者:jyh7081
--  发布时间:2017/4/25 18:46:00
--  

我是想多个RecordGrid共用下面这段代码,这多个RecordGrid,绑定的是同一个表的不同字段。没改成,请帮忙,谢谢!

 

Dim g1 = e.Form.Controls("RecordGrid1").BaseControl
If vars("xy") <> CurrentTable.Position & "," & g1.selection.r1 Then
    vars("xy") = CurrentTable.Position & "," & g1.selection.r1
    Dim rt = e.form.Controls("Panel1").basecontrol.Controls("mytxt")

    rt.text = iif(g1(g1.Selection.r1, 1) Is dbnull.value, "", g1(g1.Selection.r1, 1))
    rt.Select(0, rt.text.length)
    rt.SelectionFont = New Font("仿宋_GB2312",17)  \'字体字号
    rt.SelectionStart = rt.text.length
End If
g1.AutoSizeRows

 

[此贴子已经被作者于2017/4/25 20:52:56编辑过]

--  作者:有点蓝
--  发布时间:2017/4/25 20:24:00
--  

for i as integer = 1 to 10 \'有多少个自己改这个数字

    Dim g1 = e.Form.Controls("RecordGrid" & i).BaseControl

If vars("xy") <> CurrentTable.Position & "," & g1.selection.r1 Then
    vars("xy") = CurrentTable.Position & "," & g1.selection.r1
    Dim rt = e.form.Controls("Panel1").basecontrol.Controls("mytxt")

    rt.text = iif(g1(g1.Selection.r1, 1) Is dbnull.value, "", g1(g1.Selection.r1, 1))
    rt.Select(0, rt.text.length)
    rt.SelectionFont = New Font("仿宋_GB2312",17)  \'字体字号
    rt.SelectionStart = rt.text.length
End If
g1.AutoSizeRows

next


--  作者:jyh7081
--  发布时间:2017/4/25 21:00:00
--  

还是有问题,请版主帮忙看看实例,右边窗口与左边的记录窗口单元格同步;页签1和页签2都绑定 表A, 绑定时存在部分相同的字段。

 

 


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

附件1:

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


[此贴子已经被作者于2017/4/25 22:04:03编辑过]

--  作者:有点蓝
--  发布时间:2017/4/25 21:39:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:记录窗口.table


--  作者:jyh7081
--  发布时间:2017/4/25 22:05:00
--  

谢谢版主!

右侧的录入窗口,光标始终移动到字符尾部,不能在中间编辑了。

另外,如果再增加一个窗口,绑定表B,自定义函数mytxt_TextChanged、mytxt_MouseDown怎么改?

 

附件:

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

[此贴子已经被作者于2017/4/25 22:10:01编辑过]

--  作者:有点蓝
--  发布时间:2017/4/25 22:28:00
--  
TimerTick
Dim tab As WinForm.TabControl = e.Form.Controls("TabControl1")
Dim g1 = e.Form.Controls("RecordGrid" & (tab.SelectedIndex+1)).BaseControl
If vars("xy") <> CurrentTable.Position & "," & g1.selection.r1 Then
    vars("xy") = CurrentTable.Position & "," & g1.selection.r1
    Dim rt = e.form.Controls("Panel1").basecontrol.Controls("mytxt")
    rt.text = iif(g1(g1.Selection.r1, 1) Is dbnull.value, "", g1(g1.Selection.r1, 1))
    rt.Select(0, rt.text.length)
    rt.SelectionFont = New Font("仿宋_GB2312",17)  \'字体字号
    rt.SelectionStart = rt.text.length
End If

mytxt_TextChanged
Dim f As WinForm.Form = Forms.ActiveForm
If f IsNot Nothing Then
    Dim tab As WinForm.TabControl = f.Controls("TabControl1")
    Dim brgd = f.Controls("RecordGrid" & (tab.SelectedIndex+1)).BaseControl
    Tables(sender.tag).current(brgd(brgd.Selection.r1,0)) = sender.text
End If
[此贴子已经被作者于2017/4/25 22:28:16编辑过]

--  作者:jyh7081
--  发布时间:2017/4/25 22:45:00
--  

谢谢版主!

这个函数mytxt_MouseDown怎么改?

 

Dim sender = args(0)
Dim e = args(1)

 

If e.Button = MouseButtons.Right Then \'假定按下的是鼠标右键
    ContextMenus("快捷菜单1").Show(forms("窗口1").controls("panel1"),e.x,e.y) \'则在鼠标位置显示快捷菜单
End If

 

If e.Button = MouseButtons.Right Then \'假定按下的是鼠标右键
    ContextMenus("快捷菜单1").Show(forms("窗口2").controls("panel1"),e.x,e.y) \'则在鼠标位置显示快捷菜单
End If