以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]自定义信息提示窗口  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85479)

--  作者:elfing
--  发布时间:2016/5/26 16:35:00
--  [求助]自定义信息提示窗口
qq发送消息正常,使用qqclient发生弹窗也没有问题,全程按照帮助设置代码,但是审核者无法弹出提示窗口,不知道问题出在哪里,请指教

1.全局代码
Public fhs As New List(of String)

2.窗口保存按钮
Dim r As Row = Tables("生产计划").Current
Dim p As String = IIF(r.DataRow.RowState = DataRowState.Added, "A#", "U#")
r.Save()
Dim msg As String = p & "生产计划" & "#" & r("_Identify")
For Each bd As QQBuddy In QQClient.Buddies
    If bd.Online Then
        QQClient.Send(bd.name, msg)
    End If
Next

QQClient.Send("管理员","+@|" & r("_Identify") & "|" & r("单号") & "|" & User.Name)

3.表格审核列
Dim r As Row  = Tables("生产计划").Current
r.Save()
QQClient.Send("开发者","+@|" & r("_Identify") & "|" & r("单号") & "|" & User.Name)

4.OpenQQ客户端的MessageReceived事件
Dim ptls() As String  = e.Message.Split("|")
If ptls.Length = 4 AndAlso ptls(0) = "+@" \'如果是申请审核消息
    fhs.Add(ptls(1) & "|" & ptls(2) & "|" & ptls(3)) \'将主健?单号和制单人合成为一个字符串存储在集合中
ElseIf ptls.Length = 3 AndAlso ptls(0) = "-@" \'如果是审核通过消息
    PopMessage("生产订单" & ptls(1) & "已由" & ptls(2) & "审核通过!") 
    Dim dr As DataRow = DataTables("生产计划").Find("单号 = \'" & ptls(1) & "\'")
    If dr IsNot Nothing Then
        dr.Load
    End If
End If

5.新建窗口“审核申请”,查看按钮设置为
DataTables("生产计划").Save() \'接下来要根据主键查找,必须先保存,因为只有保存后新增行的主键才是有效值.
Dim id As String = e.Form.Controls("Label2").Text
Dim dr As DataRow = DataTables("生产计划").Find("[_Identify] = " & id)
If dr Is Nothing Then
    DataTables("生产计划").AppendLoad("[_Identify] = " & id)
    dr =  DataTables("生产计划").Find("[_Identify] = " & id)
Else
    dr.Load()
End If
If dr IsNot Nothing Then
    Dim wz As Integer = Tables("生产计划").FindRow(dr)
    If wz < 0 Then \'如果因为筛选导致此送货单不可见
        Tables("生产计划").Filter = ""
        wz =Tables("生产计划").FindRow(dr)
    End If
    If wz >= 0 Then
        Tables("生产计划").Position = wz
        Forms("生产计划").Open()
    End If
End If
e.Form.Close()

6.SystemIdle
If fhs.Count > 0 AndAlso Forms("审核申请").Opened = False Then
    Dim ptls() As String = fhs(0).Split("|")
    fhs.RemoveAt(0)
    With Forms("审核申请")
        .Open()
        .Controls("Label1").Text = ptls(2) & "新增生产订单" & ptls(1) & ",请审核!"
        .Controls("Label2").Text = ptls(0) \'将发货单主健设置为Label2的标题
    End With
End If



--  作者:大红袍
--  发布时间:2016/5/26 16:52:00
--  

ReceivedMessage 加入msgbox,看是否触发事件代码。

 

其余各个事件,也加入msgbox弹出值看看是否正确。


--  作者:elfing
--  发布时间:2016/5/26 18:27:00
--  
systemIdle和receivemessage均无法触发
--  作者:大红袍
--  发布时间:2016/5/26 20:09:00
--  

要理解这句代码

 

QQClient.Send("管理员","+@|" & r("_Identify") & "|" & r("单号") & "|" & User.Name)

 

红色那里,必须是你的好友,才能给他发信息,而且一般是 生产部.张三 这样的。


--  作者:elfing
--  发布时间:2016/5/26 20:26:00
--  
默认所有员工互为好友,尝试过使用上述的XXX.管理员的名字没有反应,编辑保存按钮为以下三行,只有测试1的信息被收到并弹出窗口

QQClient.Send("管理员","+@|" & r("_Identify") & "|" & r("单号") & "|" & User.Name,True)
QQClient.SendChatMessage("管理员","{!}测试1")
QQClient.Send("管理员","{!}测试2")

--  作者:大红袍
--  发布时间:2016/5/26 20:39:00
--  

 换一个好友发送测试。


--  作者:大红袍
--  发布时间:2016/5/26 20:40:00
--  

发送不成功,肯定是用户名没有设置对,或者是之间不是好友。