WallesCai(皮厚怎么了,摔跤不疼,冬天不冷,夏天还不怕蚊子呢!) 请进来拿分!!!

JackShow100 2004-11-25 07:15:16
WallesCai(皮厚怎么了,摔跤不疼,冬天不冷,夏天还不怕蚊子呢!)
首先,我要谢谢你的解答。
原因出处:
http://community.csdn.net/Expert/topic/3585/3585910.xml?temp=.7381098
另外,我想问的是,我已经照你的方法做了。
可我想当鼠标移到相应的图标单击时,在右边显示他的信息:比如上机者名字,计算机号,上机开始时间和下机时间等;并且鼠标cur也换成另外一种样式。
谁能帮我解决,除了本贴给分外,我另开贴给50分啊。
...全文
114 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
aiur2000 2004-11-26
  • 打赏
  • 举报
回复
看到楼主的分,想去新注册个:WallesCa1(皮厚怎么了,摔跤不疼,冬天不冷,夏天还不怕蚊子!)
骗分的冲动:)
韧恒 2004-11-26
  • 打赏
  • 举报
回复
楼主大人,个人认为您在各种答案中选择了一个不太理想的方案。其实最好的还应该是listview。你可以少许多麻烦!
qidaozhilong 2004-11-26
  • 打赏
  • 举报
回复
蹭点分用用,楼上的不介意吧。
JackShow100 2004-11-26
  • 打赏
  • 举报
回复
谢谢, WallesCai(皮厚怎么了,摔跤不疼,冬天不冷,夏天还不怕蚊子呢!)
熊孩子开学喽 2004-11-25
  • 打赏
  • 举报
回复
其实你这个程序再考虑得周到一点的话,这个帖子和前一个帖子的内容都可以放在一起解决掉:
因为在用户信息的数据结构中应该也会包含该台机器是否在使用中(是否登陆)

用IMAGE控件数组Image1(0)和Image1(1)来加载不同状态时的显示图标


Type CostomerInformation
UserName as String '用户名
PcName as String '机器名
LogOn as Boolean '登陆状态(是或否)用来显示不同的图标
...
End Type

Sub form_load()
picture1.autoredraw=true '这个还是写一下吧,免得忘记设定
Image1(0).pictrue=loadpicture(app.path & "\LogOff.Ico")
Image1(1).pictrue=loadpicture(app.path & "\LogOn.Ico")
'假设图标LogOff.Ico为机器未使用时的图标,LogOn.Ico为机器使用时的图标
End sub

dim CostomerInfo(5,9) as CostomerInfomation
...
Sub Timer1_Timer() '用个时间控件,每隔一定时间扫描所有电脑的状态
GetStatus
DrawStatus '假设这个过程用来将每台机器的使用状态用两个不同的图标来显示
End sub

private Sub GetStatus()'假设这个过程用来获得每台电脑的使用状态和用户信息等等
'这个过程由你自己来实现吧,你应该也已经做好了
...
end sub

private Sub DrawStatus()
dim I as long
dim L as long
dim X as long
dim Y as long
for I=0 to 5
X=I*50
for L=0 to 9
Y=L*50
Picture1.PaintPictrue Image1(-CostomerInfo(I,L).LogOn).picture,X,Y,50,50
textout picture1.hdc,X+10,Y+40,I*10+L,2 '这个API我就不定义了,反正你知道
next
next
Picture1.refresh '不写这句,什么也看不到
End Sub

private Sub Picture1_MouseMove(...) '这就是上面说的东西,再搬过来一下
dim Row as long
dim Col as long
if button=1 then
Row= Y \ 50
Col= X \ 50
Picture1.ToolTipText=CostomerInfo(Col,Row).UserName ...
'还是用ToolTipText或者专门用一个LABEL来显示信息比较好,Msgbox会打断程序
endif
End Sub

唉,我基本都把整个程序写给你了,起码框架都已经有了,剩下的就是机器通讯的东西了,楼主自己再完善一下吧。
熊孩子开学喽 2004-11-25
  • 打赏
  • 举报
回复
汗哦,上面写错了一个数字:
“dim CostomerInfo(5,9) as CostomerInformation '假定一共有60个用户,一个PICTURE控件每行可以显示6个用户的信息,正好100行” 这里多写了一个0,应该是10行,呵呵
熊孩子开学喽 2004-11-25
  • 打赏
  • 举报
回复
建立一个包含用户名,用户机器号等你所需要的内容的数据结构的数组,然后在MOUSEMOVE事件中检测鼠标的所在位置,根据前一个帖子中你贴图的数据关系来判断该位置是属于哪一个用户的数组下标。
假设建立一个数据结构:
Type CostomerInformation
UserName as String
PcName as String
...
End Type
dim CostomerInfo(5,9) as CostomerInformation '假定一共有60个用户,一个PICTURE控件每行可以显示6个用户的信息,正好100行

假设每个图标的高和宽都是50像素,PICTURE控件每一行排6个图标,那么在坐标(260,130)处就是第也就是CostomerInfo(5,2)

顺便说一下,将窗体和PICTRUE控件的ScaleMode都设为3-Pixel,

Sub Picture1_MouseMove(...) '该事件中已经包含了鼠标所在的X,Y等信息,不必自己定义
dim Row as long
dim Col as long
if button=1 then
Row= Y \ 50 '因为坐标是从0开始的,而整除法也正好自动降位,所以直接用
Col= X \ 50 '这个50是图标的宽度,上面那个是图标的高度,
'如果你要在图标之间加上间距,则必须将50再加上横向和纵向的间距
Msgbox CostomerInfo(Col,Row).UserName ...
...
endif
End Sub
当然这段代码只是帮你显示了鼠标处的用户信息,而如何得到用户的信息则该由你其他的代码来实现,想必你也已经完成了那部分的功能了。
lxcc 2004-11-25
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Dim itemx As ListItem

Dim i As Integer
With ListView1
.FullRowSelect = True
.GridLines = True
.HotTracking = True
.HoverSelection = True
For i = 1 To 80
Set itemx = .ListItems.Add(, , "机器" & i)
itemx.Tag = "上机者姓名:" & "lxcc" '可以从数据库取得上机者相关信息
Next
.View = lvwIcon
End With

Text1.BorderStyle = 0
Text1.BackColor = &HC0FFFF
Text1.Visible = False
End Sub

Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim iItem As ListItem
Set iItem = ListView1.HitTest(x, y)
If iItem Is Nothing Then Exit Sub
ListView1.ToolTipText = iItem.Tag & " 现在时间:" & Now
End Sub
lxcc 2004-11-25
  • 打赏
  • 举报
回复
Private Sub Form_Load()
Dim itemx As ListItem

Dim i As Integer
With ListView1
.ColumnHeaders.Add , , "序号"
.ColumnHeaders.Add , , "文件路径及名称"
.FullRowSelect = True
.GridLines = True
.HotTracking = True
.HoverSelection = True
For i = 1 To 80
Set itemx = .ListItems.Add(, , "机器" & i)
itemx.Tag = "上机者姓名:" & "lxcc" '可以从数据库取得上机者相关信息
Next
.View = lvwIcon
End With

Text1.BorderStyle = 0
Text1.BackColor = &HC0FFFF
Text1.Visible = False
End Sub

Private Sub ListView1_MouseMove(Button As Integer, Shift As Integer, x As Single, y As Single)
Dim iItem As ListItem
Set iItem = ListView1.HitTest(x, y)
If iItem Is Nothing Then Exit Sub
ListView1.ToolTipText = iItem.Tag & " 现在时间:" & Now
End Sub
viena 2004-11-25
  • 打赏
  • 举报
回复
蹭分
Luboy 2004-11-25
  • 打赏
  • 举报
回复
再加一个Commond按钮,让使用都自己去选呗
只要他的鼠标有多种多样的方式
定义一个静态变量,Flag 也行啊(这是一种弱智方法哈哈)
还是用screen.mousepointer=1-13来显示鼠标指针的不同样式比较好啊
creazyfish 2004-11-25
  • 打赏
  • 举报
回复
鼠标cur也换成另外一种样式
//可以用screen.mousepointer=1-13来显示鼠标指针的不同样式
superstar2005 2004-11-25
  • 打赏
  • 举报
回复
哦 是单击啊,MousePointer 常数可以改变鼠标的样式
superstar2005 2004-11-25
  • 打赏
  • 举报
回复
控件有 mousemove事件 可实现你的功能。在事件中写显示他的信息:比如上机者名字

楼主请多给点分吧
daisy8675 2004-11-25
  • 打赏
  • 举报
回复
继续蹭分,HOHO
tztz520 2004-11-25
  • 打赏
  • 举报
回复
那种界面可以用ListView做出来.比较简单

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧