现有三个窗体frmmain,frm2和frm3,其中frmmain是MDIFORM,frm2和frm3是mdi子窗体,运行frmmain后调用了frm2(frm2.show)。然后在frm2运行时通过双击datagird来调用frm3窗体(frm3.show),这时问题就出现了:首先是首次调用frm3时,无论点击datagrid的第几行,在frm3种显示永远都是与datagrid的第一行相关信息,其次,当你调用完frm3后,frm2窗体会出现两个,而且位置随调用frm3的次数在不停地向右下角移动。Frm3中有一个msflexgrid1和label1两个控件。请高手帮忙!!!很急!!!
代码如下:
Frmmain的代码:
Frm2.show
***********************
Frm2中的代码:
Public sdel As String
Frm2_load()
Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
Private Sub DataGrid_DblClick()
If DataGrid.Col = 0 Then
sdel = Trim(DataGrid.Text)
Frm3.Show
Else
MsgBox "请单击第一列!"
End If
End Sub
*****************************8
Frm3的代码:
Private Sub Frm3_Load()
'设置子窗体的现实位置
Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
Label1.Caption = "与" + Trim(frm2.DataGrid.Text) + "相关的凭证记录"
With MSFlexGrid1
.Rows = 1
.Cols = 9
.ColWidth(0) = 0
.ColWidth(1) = 1000
.ColWidth(2) = 4000
.ColWidth(3) = 2000
.ColWidth(4) = 2000
.ColWidth(5) = 2000
.ColWidth(6) = 2000
.ColWidth(7) = 1500
.ColWidth(8) = 1500
.TextMatrix(0, 1) = "凭证编码"
.TextMatrix(0, 2) = "摘要"
.TextMatrix(0, 3) = "代码1"
.TextMatrix(0, 4) = "1方"
.TextMatrix(0, 5) = "代码2"
.TextMatrix(0, 6) = "2方"
.TextMatrix(0, 7) = "数量"
.TextMatrix(0, 8) = "单价"
.Width = 14000
End With
loadDS
End SubPublic Sub loadDS()
Dim db As New DataBases
Dim rs As Recordset
Dim str As String
Dim s As String
Dim i As Integer
Dim k As Integer
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 9
s = Trim(frmZongFen.grdDataGrid.Text)
str = "select * from 分录表 where代码1 like '" + Trim(s) + "%'" + " or代码2 like '" + Trim(s) + "%'"
Set rs = db.RunSelectSQL(str)
i = 1
While Not rs.EOF
k = MSFlexGrid1.Rows
With MSFlexGrid1
.Rows = .Rows + 1
For i = 1 To 8
If rs(i - 1) <> "" Then
.TextMatrix(k, i) = rs(i - 1)
End If
Next
rs.MoveNext
End With
Wend
End Sub
代码如下:
Frmmain的代码:
Frm2.show
***********************
Frm2中的代码:
Public sdel As String
Frm2_load()
Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
Private Sub DataGrid_DblClick()
If DataGrid.Col = 0 Then
sdel = Trim(DataGrid.Text)
Frm3.Show
Else
MsgBox "请单击第一列!"
End If
End Sub
*****************************8
Frm3的代码:
Private Sub Frm3_Load()
'设置子窗体的现实位置
Me.Left = (frmMain.ScaleWidth - Me.Width) / 2
Me.Top = (frmMain.ScaleHeight - Me.Height) / 2
Label1.Caption = "与" + Trim(frm2.DataGrid.Text) + "相关的凭证记录"
With MSFlexGrid1
.Rows = 1
.Cols = 9
.ColWidth(0) = 0
.ColWidth(1) = 1000
.ColWidth(2) = 4000
.ColWidth(3) = 2000
.ColWidth(4) = 2000
.ColWidth(5) = 2000
.ColWidth(6) = 2000
.ColWidth(7) = 1500
.ColWidth(8) = 1500
.TextMatrix(0, 1) = "凭证编码"
.TextMatrix(0, 2) = "摘要"
.TextMatrix(0, 3) = "代码1"
.TextMatrix(0, 4) = "1方"
.TextMatrix(0, 5) = "代码2"
.TextMatrix(0, 6) = "2方"
.TextMatrix(0, 7) = "数量"
.TextMatrix(0, 8) = "单价"
.Width = 14000
End With
loadDS
End SubPublic Sub loadDS()
Dim db As New DataBases
Dim rs As Recordset
Dim str As String
Dim s As String
Dim i As Integer
Dim k As Integer
MSFlexGrid1.Rows = 1
MSFlexGrid1.Cols = 9
s = Trim(frmZongFen.grdDataGrid.Text)
str = "select * from 分录表 where代码1 like '" + Trim(s) + "%'" + " or代码2 like '" + Trim(s) + "%'"
Set rs = db.RunSelectSQL(str)
i = 1
While Not rs.EOF
k = MSFlexGrid1.Rows
With MSFlexGrid1
.Rows = .Rows + 1
For i = 1 To 8
If rs(i - 1) <> "" Then
.TextMatrix(k, i) = rs(i - 1)
End If
Next
rs.MoveNext
End With
Wend
End Sub
Frm2_load()、Frm3_load()什么时候被调用?
Frmmain中何处调用Frm2.show?
和
frmZongFen.grdDataGrid.Text不一致的。
frmmain通过点击菜单调用frm2,
在frm2运行时通过双击datagird来调用frm3