点击MSHFlexGrid选择一行,单击显示图片,老是失灵,求高手解!
功能描述:点击表格中一行通过表格数据编号,在数据库得到数据库中“图片”字段中保存的图片文件夹绝对路径,赋值给apptp1这个变量传递给commbox7的单击事件单击按钮7,通过apptp1获得的路径查找文件夹中所有文件,单击一次显示一张图片,循环显示。
问题:在表格的单击事件没有出错,但是奇怪的是,有时候能通过按钮7显示选中的那个信息对应的图片,有时候却显示不了,没有错误提示(出错处理屏蔽了),
有点像来不及加载图片或文件的感觉,如果表格中存在几条数据,选择一个循环显示图片没有问题,但是,点击其他几条的时候却发现显示不了图片了,
然后回到开始正常显示的那条也显示不了了,在选择刚才无法显示的又显示正常了,有时候干脆一个都不显示图片!!特别是点击频率快或多的时候
帮检查一下看看什么问题!如果有更好的优化方法请指点一下。
Dim spt() As String
Dim apptp1 As String
Dim mg
----------------------------------------------------------
Private Sub MSHFlexGrid3_Click()
Dim j As Integer
Command7.Enabled = False
j = MSHFlexGrid3.MouseRow
If MSHFlexGrid3.TextMatrix(j, 0) = mg Then Exit Sub '如果点击原来的那条就退出
mg = MSHFlexGrid3.TextMatrix(j, 0)
If MSHFlexGrid3.Text = "" Then Exit Sub '如果没有记录就退出
apptp1 = "" '清空变量
Label25.Caption = ""
Set Image1.Picture = Nothing
Mle = "" '清空变量
Set cn = New adodb.Connection
Set rs = New adodb.Recordset
If cn.State = adStateOpen Then cn.Close
If rs.State = adStateOpen Then rs.Close
cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source = " & App.Path & "\fyxx.mdb;Jet OLEDB:Database Password=88 "
sql = "select * from czfy where 编号 = " & (MSHFlexGrid3.TextMatrix(j, 0)) & ""
rs.Open sql, cn, adOpenForwardOnly, adLockBatchOptimistic
If rs.EOF And rs.BOF Then Exit Sub
apptp1 = rs.Fields("图片") & "" '获取图片文件夹路径
If apptp1 <> "" Then
Command7.Enabled = True
End If
If apptp1 = "" Then
Label25.Caption = "注意:没有图片!"
Exit Sub
End If
End If
end sub
------------------------------------------------------------------------------------------------
Private Sub Command7_Click() '循环显示图片
On Error GoTo ErrLabel:
Dim sth As String
Dim sle As String
Dim tst As ListItem
Dim Mle As String
Static ia%
Command7.Enabled = False
If apptp1 = "" Then
Label25.Caption = "注意:没有图片!"
Exit Sub
End If
'======================
Label25.Caption = ""
Set Image1.Picture = Nothing
sth = apptp1 + "\"
sle = sth & "*.*"
Mle = Dir(sle, vbNormal) '获得符合条件的文件名
Do While Mle <> "" '循环查找
f = f & Mle & vbCrLf '添加到f数组
Mle = Dir
Loop
spt = Split(f, vbCrLf)
If ia = UBound(spt) - 1 Then ia = 0 '循环
Image1.Picture = LoadPicture(apptp1 & "\" & spt(ia))
Label25.Caption = CreateObject("Scripting.FileSystemObject").GetBaseName(apptp1 & "\" & spt(ia)) '显示文件名不带后缀
ia = ia + 1
'=======================================
ErrLabel:
Command7.Enabled = True
End Sub
[ 本帖最后由 wxflw 于 2012-11-14 17:58 编辑 ]