我科目表的编号列名称是“科目编号”,汇总表的编号列名称是“科目编码”
1、首先在汇总表新增一个窗口,窗口类型为"DropDownForm",窗口插入一个TextBox和一个Table控件,Table控件的“作为副本”属性设置为True,“允许编辑”属性设置为False,并绑定到科目表。
2、将TextBox1的TextChanged事件代码设为:
Dim txt As String = e.Form.Controls("TextBox1").Text
Dim tbl As Table = Tables("窗口1_Table1")
If txt = "" Then
tbl.Filter = ""
Else
txt = "'%" & txt & "%'"
tbl.Filter = "科目编号 Like " & txt & " Or 科目名称 Like " & txt
End If
3、将TextBox1的KeyDown事件代码设为:
Dim tbl As Table = Tables("窗口1_Table1")
If e.KeyCode = Keys.Up Then
tbl.Position = tbl.Position - 1
e.Cancel = True
Elseif e.KeyCode = Keys.Down Then
tbl.Position = tbl.Position + 1
e.Cancel = True
Elseif e.KeyCode = Keys.Enter Then
If tbl.Current IsNot Nothing Then
e.Form.DropDownBox.Value = tbl.Current("科目编号")
End If
e.Cancel = True
e.Form.DropDownBox.CloseDropDown()
End If
4、将Table控件的DoubleClick事件设置为:
Dim tbl As Table = Tables("窗口1_Table1")
If tbl.Current IsNot Nothing Then
e.Form.DropDownBox.Value = tbl.Current("科目编号")
End If
e.Form.DropDownBox.CloseDropDown()
5、将窗口的DropDownClosed事件代码设置为:
If e.Form.DropTable IsNot Nothing Then '如果是通过表下拉的
e.Form.DropTable.FinishEditing()
Else '如果是通过窗口下拉的
e.Form.DropDownBox.WriteValue()
End If
6、在项目事件AfterOpenProject事件中加入代码:
Tables("汇总表").Cols("科目编码").DropForm = "窗口1"
结果在汇总表科目编码列录入的时候窗口没跳出来,没任何影响