📄 kmaidisplayalarmdlg.cpp
字号:
// KMAIDisplayAlarmDlg.cpp : implementation file
//
#include "stdafx.h"
#include "KMAIDisplayAlarmDlg.h"
#include "KXMLManager.h"
#include "KAlarmInfoDlg.h"
#include "KAnswerAlarmDlg.h"
#include "KPOPDlg.h"
#include "../KylinSystem/KTime.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// KMAIDisplayAlarmDlg dialog
KMAIDisplayAlarmDlg* KMAIDisplayAlarmDlg::ActiveWindow = NULL;
KMAIDisplayAlarmDlg::KMAIDisplayAlarmDlg(CWnd* pParent /*=NULL*/)
: CDialog(KMAIDisplayAlarmDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(KMAIDisplayAlarmDlg)
m_QueryValue = _T("");
//}}AFX_DATA_INIT
ActiveWindow = this;
}
void KMAIDisplayAlarmDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(KMAIDisplayAlarmDlg)
DDX_Control(pDX, IDC_COMBO1, m_QueryType);
DDX_Control(pDX, IDNOCEIVE, m_NOCEIVE);
DDX_Control(pDX, IDMANAGING, m_MANAGING);
DDX_Control(pDX, IDFINISH, m_FINISH);
DDX_Control(pDX, IDOK, m_AnswerBT);
DDX_Text(pDX, IDC_EDIT1, m_QueryValue);
DDX_Control(pDX, IDC_MSFLEXGRIDAlARM, m_AlarmList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(KMAIDisplayAlarmDlg, CDialog)
//{{AFX_MSG_MAP(KMAIDisplayAlarmDlg)
ON_BN_CLICKED(IDOK, OnAnswerAlarm)
ON_BN_CLICKED(IDLookHIS, OnLookHIS)
ON_BN_CLICKED(IDC_BUTTONQUERY, OnButtonquery)
ON_BN_CLICKED(IDMANAGING, OnManaging)
ON_BN_CLICKED(IDFINISH, OnFinish)
ON_BN_CLICKED(IDNOCEIVE, OnNoceive)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// KMAIDisplayAlarmDlg message handlers
void KMAIDisplayAlarmDlg::OnCancel()
{
// TODO: Add extra cleanup here
CDialog::OnCancel();
DestroyWindow();
}
void KMAIDisplayAlarmDlg::OnAnswerAlarm()
{
// TODO: Add your control notification handler code here
//对选中的行进行回复信息处理,弹出回复窗体
if(SelectEventID!="")
{
KAnswerAlarmDlg AnswerAlarmDlg;
AnswerAlarmDlg.SetEventID(SelectEventID);
if(AnswerAlarmDlg.DoModal() == IDOK)
{
this->OnInitDialog();
}
}
else
{
KPOPDlg POP;
POP.PopInfo="请选择要回复的报警!";
POP.DoModal();
}
}
void KMAIDisplayAlarmDlg::OnLookHIS()
{
}
BEGIN_EVENTSINK_MAP(KMAIDisplayAlarmDlg, CDialog)
//{{AFX_EVENTSINK_MAP(KMAIDisplayAlarmDlg)
ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, -600 /* Click */, OnClickMSFLEXGRIDAlARM, VTS_NONE)
ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, 70 /* RowColChange */, OnRowColChangeMSFLEXGRIDAlARM, VTS_NONE)
ON_EVENT(KMAIDisplayAlarmDlg, IDC_MSFLEXGRIDAlARM, -601 /* DblClick */, OnDblClickMSFLEXGRIDAlARM, VTS_NONE)
//}}AFX_EVENTSINK_MAP
END_EVENTSINK_MAP()
void KMAIDisplayAlarmDlg::OnClickMSFLEXGRIDAlARM()
{
// TODO: Add your control notification handler code here
//AlarmList的单击事件,本行被选中,高亮显示
}
BOOL KMAIDisplayAlarmDlg::OnInitDialog()
{
CDialog::OnInitDialog();
for(int i=m_QueryType.GetCount();i>0;i--)
{
m_QueryType.DeleteString(0);
}
m_QueryType.AddString("矿井名称");
m_QueryType.AddString("报警开始时间");
m_QueryType.AddString("报警结束时间");
SetDlgInfo();
InitGrid();
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void KMAIDisplayAlarmDlg::OnButtonquery()
{
// TODO: Add your control notification handler code here
UpdateData();
CString strQ="";
int select=m_QueryType.GetCurSel();
if(select==0)
{
strQ="MineName";
}
if(select==1)
{
strQ="StartTime";
}
if(select==2)
{
strQ="EndTime";
}
KXMLManager* xml = KXMLManager::Instance();
if(select==-1||strQ=="")
{
//xml->GetAllAlarm();
Alarm = &xml->NowAlarmList;
}
else
{
CString stQuery="";
if(DlgType=="OLDALARM")
{
stQuery=_T("MessageData[IsAnswer=='1' and State=='1']");
}
if(DlgType=="NEWALARM")
{
stQuery=_T("MessageData[(IsAnswer!='1' or State!='1') and IsNoReceiveAlarm!='NOSEND']");
}
else
{
stQuery=_T("MessageData[IsNoReceiveAlarm='NOSEND']");
}
xml->GetQueryAlarm(stQuery,strQ,m_QueryValue);
Alarm = &xml->QueryAlarmList;
}
InitGrid();
}
void KMAIDisplayAlarmDlg::OnRowColChangeMSFLEXGRIDAlARM()
{
// TODO: Add your control notification handler code here
//选择发生变化事件
SelectEventID=m_AlarmList.GetText();
}
void KMAIDisplayAlarmDlg::OnDblClickMSFLEXGRIDAlARM()
{
// TODO: Add your control notification handler code here
if(SelectEventID=="")
{}
else
{
KAlarmInfoDlg* InfoDlg=new KAlarmInfoDlg();
InfoDlg->EventID=SelectEventID;
InfoDlg->Create(IDD_DIALOGALARMINFO,this);
InfoDlg->ShowWindow(SW_SHOW);
}
}
void KMAIDisplayAlarmDlg::InitGrid()
{
m_AlarmList.SetRows(1L);
CString sHeading;
sHeading = _T(" ID|矿井名称|报警名称|测点名称| 开始时间 | 结束时间 |sort");
m_AlarmList.SetFormatString(sHeading);
//初始化值
VARIANT variant;
variant.vt = VT_I4;
variant.lVal = 1; //添加的行
KXMLManager *xml = KXMLManager::Instance();
CString strInfo;
m_AlarmList.SetRedraw(FALSE);
KGuid mEventId;
for(EVENTIDLIST::iterator it = Alarm->begin(); it != Alarm->end(); ++it)
{
mEventId = *it;
strInfo = xml->AllAlarm[mEventId];
m_AlarmList.AddItem(strInfo, variant);
}
m_AlarmList.SetRedraw(TRUE);
//设置网格的样式
//设置用户 可以调整
m_AlarmList.SetAllowUserResizing(true);
//设置排序
if(m_AlarmList.GetRows() > 1)
{
m_AlarmList.SetRow(1);
m_AlarmList.SetRowSel(m_AlarmList.GetRow());
}
m_AlarmList.SetCol(6);
m_AlarmList.SetSort(2);
m_AlarmList.SetAllowBigSelection(true);
//设置为行选择
m_AlarmList.SetSelectionMode(1);
for(int i = 0; i < m_AlarmList.GetCols(); ++i)
{
m_AlarmList.SetColAlignment(i, 1);
}
//设置第一列和最后一列不可见
m_AlarmList.SetColWidth(0,0);
m_AlarmList.SetColWidth(1,2500);
m_AlarmList.SetColWidth(2,2500);
m_AlarmList.SetColWidth(3,2500);
m_AlarmList.SetColWidth(4,2500);
m_AlarmList.SetColWidth(5,2500);
m_AlarmList.SetColWidth(6,0);
}
void KMAIDisplayAlarmDlg::PostNcDestroy()
{
ActiveWindow = NULL;
delete this;
}
void KMAIDisplayAlarmDlg::Init()
{
this->SetDlgInfo();
this->InitGrid();
}
void KMAIDisplayAlarmDlg::OnManaging()
{
if(this->DlgType != _T("NEWALARM"))
{
this->DlgType = _T("NEWALARM");
this->SetDlgInfo();
this->InitGrid();
}
}
void KMAIDisplayAlarmDlg::OnFinish()
{
if(this->DlgType != _T("OLDALARM"))
{
this->DlgType = _T("OLDALARM");
this->SetDlgInfo();
this->InitGrid();
}
}
void KMAIDisplayAlarmDlg::OnNoceive()
{
if(this->DlgType != _T("NOCEIVEALAM"))
{
this->DlgType = _T("NOCEIVEALAM");
this->SetDlgInfo();
this->InitGrid();
}
}
void KMAIDisplayAlarmDlg::SetDlgInfo()
{
KXMLManager* xml = KXMLManager::Instance();
//xml->GetAllAlarm();
if(DlgType=="OLDALARM")
{
this->SetWindowText("已处理报警信息");
Alarm = &xml->OldAlarmList;
}
if(DlgType=="NEWALARM")
{
this->SetWindowText("处理中报警信息");
Alarm = &xml->NowAlarmList;
}
if(DlgType=="NOCEIVEALAM")
{
this->SetWindowText("未处理报警信息");
Alarm = &xml->NoCeiveAlarmList;
}
}
BOOL KMAIDisplayAlarmDlg::PreTranslateMessage(MSG* pMsg)
{
return CDialog::PreTranslateMessage(pMsg);
}
LRESULT KMAIDisplayAlarmDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
if(message == WM_SETDIRTY)
{
if(nTimer != 0)
{
KillTimer(nTimer);
nTimer = 0;
}
nTimer = SetTimer(0, 5000, NULL);
}
return CDialog::WindowProc(message, wParam, lParam);
}
void KMAIDisplayAlarmDlg::OnTimer(UINT nIDEvent)
{
InitGrid();
KillTimer(nTimer);
nTimer = 0;
CDialog::OnTimer(nIDEvent);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -