VB6表单跳转后自动执行函数及PSA34表单逻辑疑问咨询
VB6 ListView双击事件相关问题解决
问题1:跳转至PSA33表单后自动执行fnDataFind函数
你原来的代码直接用Call PSA33.fnDataFind无法生效,核心原因是必须通过表单实例调用成员函数,而非直接引用表单类名。另外要确保fnDataFind在PSA33表单中被声明为Public(默认是Private,外部无法访问)。
修改后的ListView双击事件代码:
Private Sub ListView1_DblClick() Dim MyForm As Form If ListView1.SelectedItem.ListSubItems(8) > 0 Then Set MyForm = New PSA33 '传递数据 MyForm.txtChul_No.Text = ListView1.SelectedItem.ListSubItems(1).Text MyForm.datChul_Date = ListView1.SelectedItem.ListSubItems(11) MyForm.cmbSaup_Gubn.Text = cmbSaup_Gubn.Text '调用实例的fnDataFind函数 MyForm.fnDataFind '显示表单 MyForm.Show Else 'PSA34逻辑处理见问题2 End If End Sub
同时在PSA33表单中修改函数声明:
Public Sub fnDataFind() '原函数逻辑保持不变 End Sub
问题2:PSA34表单不存在的替代处理逻辑
先解释你找到的PSA33中代码的逻辑
这段Select Case是根据表单的gPGM_ID变量区分业务场景:
- 当
gPGM_ID = "PSA33"时,直接显示计算出的合计数量、金额、税额等正向数值 - 当
gPGM_ID = "PSA34"时,将数量、金额(不含税额)取绝对值后乘以-1,实现反向数值显示(通常用于退货、冲销类业务,和PSA33的正向业务做区分)
替代原PSA34表单的实现方案
因为没有PSA34表单,直接复用PSA33实例,只需设置它的gPGM_ID为"PSA34",再传递数据并执行查询即可。完整双击事件代码如下:
Private Sub ListView1_DblClick() Dim MyForm As Form If ListView1.SelectedItem.ListSubItems(8) > 0 Then Set MyForm = New PSA33 MyForm.gPGM_ID = "PSA33" '显式设置场景标识 '传递数据 MyForm.txtChul_No.Text = ListView1.SelectedItem.ListSubItems(1).Text MyForm.datChul_Date = ListView1.SelectedItem.ListSubItems(11) MyForm.cmbSaup_Gubn.Text = cmbSaup_Gubn.Text MyForm.fnDataFind MyForm.Show Else '复用PSA33实现PSA34逻辑 Set MyForm = New PSA33 MyForm.gPGM_ID = "PSA34" '关键:切换为PSA34场景 '传递数据 MyForm.txtChul_No.Text = ListView1.SelectedItem.ListSubItems(1).Text MyForm.datChul_Date = ListView1.SelectedItem.ListSubItems(11) MyForm.cmbSaup_Gubn.Text = cmbSaup_Gubn.Text MyForm.fnDataFind MyForm.Show End If End Sub
注意:需要确保PSA33表单中的gPGM_ID是Public变量,否则外部无法赋值:
Public gPGM_ID As String '在PSA33表单的通用声明段添加
内容的提问来源于stack exchange,提问作者chris
相关产品推荐
相关产品推荐

