231 lines
7.8 KiB
C#
231 lines
7.8 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using ControlLib.com;
|
|
using CommonLib;
|
|
using CommonLib.data;
|
|
|
|
namespace Lskj.Main.sub
|
|
{
|
|
public partial class FrmMessage : FormBase
|
|
{
|
|
|
|
private static FrmMessage _instance = null;
|
|
|
|
private FrmMessage()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
public static FrmMessage Instance
|
|
{
|
|
get {
|
|
if (_instance == null)
|
|
_instance = new FrmMessage();
|
|
return _instance;
|
|
}
|
|
}
|
|
//=============================================================================================================
|
|
|
|
//主界面上的消息标签
|
|
public Label MessageButton;
|
|
|
|
//消息数
|
|
public int MessageCount = 0;
|
|
|
|
/// <summary>
|
|
/// 更新消息数
|
|
/// </summary>
|
|
/// <param name="dec"></param>
|
|
public void UpdateMessageCount(int dec)
|
|
{
|
|
MessageCount += dec;
|
|
if(MessageButton!=null)
|
|
MessageButton.Text = "消息:" + MessageCount.ToString();
|
|
}
|
|
|
|
|
|
private void FrmMessage_Load(object sender, EventArgs e)
|
|
{
|
|
//初始化位置
|
|
this.Top = Screen.PrimaryScreen.Bounds.Height-this.Height-35;
|
|
this.Left = Screen.PrimaryScreen.Bounds.Width-this.Width-2;
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 添加一条消息
|
|
/// </summary>
|
|
/// <param name="MessageId"></param>
|
|
/// <param name="strInfo"></param>
|
|
public void AddItem(int MessageId, string strInfo)
|
|
{
|
|
SingleSelecter item = new SingleSelecter();
|
|
item.SetInfo(MessageId, strInfo);
|
|
panelContainer.Controls.Add(item);
|
|
item.ContextMenuStrip = this.contextMenuStrip1;
|
|
item.LblInfo.DoubleClick += new EventHandler(onItemDoubleClick);
|
|
item.LblInfo.Click += new EventHandler(onItemClick);
|
|
//if (panelContainer.Controls.Count % 2 == 1)
|
|
// item.BackColor = Color.LightSlateGray;
|
|
//else
|
|
// item.BackColor = Color.White;
|
|
Reset();
|
|
UpdateMessageCount(1);
|
|
}
|
|
|
|
//增加和删除后重新将panel中的控件排位置
|
|
private void Reset()
|
|
{
|
|
int startY = 0;
|
|
for (int i = 0; i < panelContainer.Controls.Count; i++)
|
|
{
|
|
Control c = panelContainer.Controls[i];
|
|
c.Top = startY;
|
|
startY += c.Height;
|
|
}
|
|
}
|
|
|
|
//删除选中
|
|
private void btnDelSelected_Click(object sender, EventArgs e)
|
|
{
|
|
for(int i=0;i<panelContainer.Controls.Count;)
|
|
{
|
|
Control c = panelContainer.Controls[i];
|
|
SingleSelecter item = (SingleSelecter)c;
|
|
if(item!=null && item.Checked)
|
|
{
|
|
DelMessage0("用户删除信息", item.MessageId);
|
|
panelContainer.Controls.Remove(c);
|
|
}
|
|
else
|
|
i++;
|
|
}
|
|
|
|
Reset();
|
|
}
|
|
|
|
//删除所有
|
|
private void btnDelAll_Click(object sender, EventArgs e)
|
|
{
|
|
SqlHelper.ExecuteNonQuery(CommandType.Text, "insert P_H_MsgHintEmployeeTab select *,getdate() from P_MsgHintEmployeeTab where LoginAccount='" + ERPInfo.Instance.OperatorName + "'", null);
|
|
SqlHelper.ExecuteNonQuery(CommandType.Text, "delete P_MsgHintEmployeeTab where LoginAccount='" + ERPInfo.Instance.OperatorName + "'", null);
|
|
SqlHelper.ExecuteNonQuery(CommandType.Text, "insert P_H_MessageHintTab select *,getdate() from P_MessageHintTab where messageid not in (select messageid from P_H_MessageHintTab)", null);
|
|
SqlHelper.ExecuteNonQuery(CommandType.Text, "DELETE P_MessageHintTab where messageid not in(select messageid from P_MsgHintEmployeeTab)", null);
|
|
|
|
UpdateMessageCount(-MessageCount);
|
|
|
|
panelContainer.Controls.Clear();
|
|
Close();
|
|
}
|
|
|
|
//关闭消息窗体
|
|
private void btnClose_Click(object sender, EventArgs e)
|
|
{
|
|
//这里该怎么处理消息了
|
|
//UpdateMessageCount(-MessageCount);
|
|
//panelContainer.Controls.Clear();
|
|
this.Close();
|
|
}
|
|
|
|
//弹出菜单删除选择项
|
|
private void menuDelSelect_Click(object sender, EventArgs e)
|
|
{
|
|
foreach (Control c in panelContainer.Controls)
|
|
{
|
|
SingleSelecter item = (SingleSelecter)c;
|
|
if (item != null && item.Selected)
|
|
{
|
|
DelMessage0("用户删除信息", item.MessageId);
|
|
panelContainer.Controls.Remove(c);
|
|
Reset();
|
|
UpdateMessageCount(-1);
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
//单击到某个容器则修改selected状态
|
|
private void onItemClick(object sender, EventArgs e)
|
|
{
|
|
Label lbl = (Label)sender;
|
|
SingleSelecter item = (SingleSelecter)lbl.Parent;
|
|
foreach (Control c in panelContainer.Controls)
|
|
{
|
|
SingleSelecter item1 = (SingleSelecter)c;
|
|
if (item1 != null)
|
|
item1.Selected = false;
|
|
}
|
|
item.Selected = true;
|
|
}
|
|
|
|
//双击弹出其他操作窗口
|
|
private void onItemDoubleClick(object sender, EventArgs e)
|
|
{
|
|
Label lbl = (Label)sender;
|
|
SingleSelecter item = (SingleSelecter)lbl.Parent;
|
|
//string strInfo = item.LblInfo.Text;
|
|
//MessageBox.Show(strInfo);
|
|
string DllFileName = item.DllName;//除了库名还应提供是delphi还是c#标志
|
|
|
|
if (DllFileName!="")
|
|
{
|
|
this.Hide();
|
|
//Gtime4id = 1;
|
|
|
|
//string NewModelFlag = "";
|
|
//PubUtil.LoadDll(DllFileName, NewModelFlag);
|
|
PubUtil.LoadDelphiDll(PubUtil.AbsolutelyPath + "lib/" + DllFileName, DllFileName, DllFileName, DllFileName, "OK", 100, "");
|
|
//rightstr(node.Values[3], 12)
|
|
//Gtime4id := 0;
|
|
this.Show();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 查阅消息后处理
|
|
/// </summary>
|
|
/// <param name="SysMessage"></param>
|
|
/// <param name="messageid"></param>
|
|
private void DelMessage0(string SysMessage, int messageid)
|
|
{
|
|
try
|
|
{
|
|
string strSql = string.Format("update P_MessageHintTab set HintType=0 where HintType=1 and messageid='{0}'", messageid);
|
|
SqlHelper.ExecuteNonQuery(CommandType.Text, strSql, null);
|
|
// MgePackageDel.messageid := messageid;
|
|
// MgePackageDel.SqlValue := IntToStr(messageid) + '|';
|
|
// MgePackageDel.LoginAccounts := GOperatorname;
|
|
// MgePackageDel.Remark := SysMessage;
|
|
// MgePackageDel.OpWay := 4;
|
|
// MgePackageDel.ADOSP := pr_MessageHintop;
|
|
// PubleUnit.MessAgeMge.FDeleteMessage(MgePackageDel);
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
PubUtil.WriteError("查阅消息后处理出错" , ex.Message);
|
|
}
|
|
|
|
}
|
|
|
|
/// <summary>
|
|
/// 是否可以释放窗体
|
|
/// </summary>
|
|
public bool CanClose = false;
|
|
|
|
private void FrmMessage_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (!CanClose && e.CloseReason == CloseReason.UserClosing)
|
|
{
|
|
e.Cancel = true;
|
|
this.Hide();
|
|
}
|
|
}
|
|
}
|
|
}
|