以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  单击显示  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=151772)

--  作者:nxdx112
--  发布时间:2020/7/3 7:44:00
--  单击显示

AfterLoad

Dim lvw As WinForm.ListView = Forms("住宿状态").Controls("ListViewindex")
lvw.StopRedraw() \'暂停绘制
lvw.Rows.Clear() \'清除原来的行
lvw.Images.Clear() \'清除原来的图片
lvw.View = ViewMode.LargeIcon \'显示模式为大图标
lvw.Images.AddLargeImage("kong", "kong.png") \'
lvw.Images.AddLargeImage("man", "man.png") \'
lvw.Images.AddLargeImage("yu", "yu.png") \'
lvw.Images.AddLargeImage("cuo", "cuo.png") \'
lvw.Images.LargeSize = New Size(120,60) \'定义大图标尺寸
For Each dr As DataRow In DataTables("宿舍基础数据").DataRows \'从数据表中提取数据
    Dim vr As  WinForm.ListViewRow =  lvw.Rows.Add() \'增加一行
  
         vr.Text = dr("楼号") &  dr("宿舍")   & vbcrlf  & "可住" & dr("可住人数")  & "人" & "已住" & dr("已住人数") &"人" &  "空" & dr("空余床位")  \'设置标题
    If dr("状态") = "空宿舍" Then \'设置分组
        vr.ImageKey = "kong"
    ElseIf  dr("状态") = "已住满" Then \'设置分组
        vr.ImageKey = "man"
    ElseIf  dr("状态") = "有余床" Then \'设置分组
        vr.ImageKey = "yu"
    ElseIf dr("状态") = "出错了" Then \'设置分组
        vr.ImageKey = "cuo"
    End If

    vr.Tag= dr \'将DataRow赋值给ListViewRow的Tag属性,将二者联系起来
Next
lvw.ResumeRedraw() \'恢复绘制-

----------------RowActivate
Dim lvw As WinForm.ListView = e.Form.Controls("ListViewindex")
Dim vr As WinForm.ListViewRow = lvw.Current \'获取ListView的当前行
If vr Is Nothing Then \'如果不存在当前行,也就是内有选定任何一行
    Return
End If

If vr.ImageKey = "kong" Or vr.ImageKey = "man" Or  vr.ImageKey = "yu" Or vr.ImageKey = "cuo" Then
Dim btn As WinForm.Button = e.Form.Controls("Button1")
btn.PerformClick() \'点击任何一个,打开对应的
End If

图片点击可在新窗口打开查看此主题相关图片如下:360截图20200703073707154.jpg
图片点击可在新窗口打开查看
想要单击对应的宿舍图标,下面的“住宿生信息”表中只显示对应的楼号和宿舍的人员信息,自己弄了半天没有做出来
[此贴子已经被作者于2020/7/3 7:47:18编辑过]

--  作者:有点蓝
--  发布时间:2020/7/3 8:52:00
--  
msgbox(vr.ImageKey) 显示什么?
If vr.ImageKey = "kong" Or vr.ImageKey = "man" Or  vr.ImageKey = "yu" Or vr.ImageKey = "cuo" Then

Button1点击click代码发上来

--  作者:nxdx112
--  发布时间:2020/7/3 9:13:00
--  
Dim lvw As WinForm.ListView = e.Form.Controls("ListViewindex")
Dim vr As WinForm.ListViewRow = lvw.Current \'获取ListView的当前行
If vr Is Nothing Then \'如果不存在当前行,也就是内有选定任何一行
    Return
End If
Dim dr As DataRow = vr.tag \'获取此行对应的DataRow
Dim ps As Integer = Tables("宿舍基础数据").FindRow(dr)


If vr.ImageKey = "man" Then
MessageBox.Show( "这个宿舍已住满.,请选择其他宿舍!")
End If 

If vr.ImageKey = "cuo" Then
MessageBox.Show( "这个宿舍已住人数大于可住人数,请检查!")
End If 

If vr.ImageKey = "yu" Then
MessageBox.Show( "这个宿舍还有床位,可以入住!")
End If 

If vr.ImageKey = "kong" Then
MessageBox.Show( "这个宿舍这个宿舍还未有人入住,可以入住!")
Return
End If 
If ps >= 0 Then
    Tables("宿舍基础数据").Position = ps
    Forms("住宿生信息").show
    For Each cl As WinForm.ListViewColumn In lvw.Columns \'逐列更新值
        \'vr(cl.Name) = dr(cl.Name)
    Next
End If
点击不论是那种情况,提示后,并在下面已经打开的\'住宿生信息“表中显示对应的楼号和该宿舍   即筛选出和点击的楼号,宿舍相对应的楼号和宿舍的学生信息,现在显示的是所有宿舍的信息
[此贴子已经被作者于2020/7/3 9:16:48编辑过]

--  作者:有点蓝
--  发布时间:2020/7/3 9:20:00
--  
这个代码只是做个定位而已,没看到有筛选的代码,比如:
Tables("宿舍基础数据").Filter = "楼号=\'" & dr("楼号") & "\'"