📄 feedformview.cpp
字号:
// FeedFormView.cpp : implementation file
//
#include "stdafx.h"
#include "mestang.h"
#include "FeedFormView.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CFeedFormView
IMPLEMENT_DYNCREATE(CFeedFormView, CFormView)
CFeedFormView::CFeedFormView()
: CFormView(CFeedFormView::IDD)
{
//{{AFX_DATA_INIT(CFeedFormView)
m_sear_l = 3300;
m_sear_w = 2000;
m_sear_h = 220;
m_edit_cast_id = _T("");
m_produce_data = CTime::GetCurrentTime();
m_feed_plan_id = _T("");
m_feed_furcode = _T("");
m_feed_number = 1;
//}}AFX_DATA_INIT
}
CFeedFormView::~CFeedFormView()
{
}
void CFeedFormView::DoDataExchange(CDataExchange* pDX)
{
CFormView::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CFeedFormView)
DDX_Control(pDX, IDC_CONDICTION, m_feed_searchslab_cond);
DDX_Control(pDX, IDC_LED, m_led_weight_mode);
DDX_Control(pDX, IDC_LIST_FEED_QUEUE, m_feed);
DDX_Control(pDX, IDC_LIST_AFTER_WEIGHT, m_after_weight);
DDX_Control(pDX, IDC_SHIFT, m_shift);
DDX_Control(pDX, IDC_LIST_PLAN, m_plan);
DDX_Control(pDX, IDC_LIST_CAST, m_cast);
DDX_Text(pDX, IDC_EDIT_SEAR_L, m_sear_l);
DDV_MinMaxInt(pDX, m_sear_l, 1500, 3500);
DDX_Text(pDX, IDC_EDIT_SEAR_W, m_sear_w);
DDV_MinMaxInt(pDX, m_sear_w, 1000, 3000);
DDX_Text(pDX, IDC_EDIT_SEAR_H, m_sear_h);
DDV_MinMaxInt(pDX, m_sear_h, 100, 300);
DDX_Control(pDX, IDC_SEAR_STEEL, m_sear_steel);
DDX_Text(pDX, IDC_EDIT_CAST_ID, m_edit_cast_id);
DDX_DateTimeCtrl(pDX, IDC_SELECT_DATE_INPUT, m_produce_data);
DDX_Text(pDX, IDC_FEED_PLAN_ID, m_feed_plan_id);
DDX_Text(pDX, IDC_FEED_FUECODE, m_feed_furcode);
DDX_Control(pDX, IDC_IN_FUR, m_fur_no);
DDX_Text(pDX, IDC_FEED_NUMBER, m_feed_number);
DDV_MinMaxInt(pDX, m_feed_number, 1, 100);
DDX_Control(pDX, IDC_LED_WEIGHT, m_led_weight);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CFeedFormView, CFormView)
//{{AFX_MSG_MAP(CFeedFormView)
ON_WM_DESTROY()
ON_BN_CLICKED(IDC_SEARCH_CAST, OnSearchCast)
ON_BN_CLICKED(IDC_SEARCH_PLAN, OnSearchPlan)
ON_BN_CLICKED(IDC_FEED, OnFeed)
ON_BN_CLICKED(IDC_SEARCH_FEED, OnSearchFeed)
ON_BN_CLICKED(IDC_CANCEL_FEED, OnCancelFeed)
ON_BN_CLICKED(IDC_WEIGHT_MODE_CHANGE, OnWeightModeChange)
ON_BN_CLICKED(IDC_WEIGHT_HAND, OnWeightHand)
ON_BN_CLICKED(IDC_WEIGHT_HAND_CANCEL, OnWeightHandCancel)
ON_NOTIFY(NM_CLICK, IDC_LIST_CAST, OnClickListCast)
ON_NOTIFY(NM_CLICK, IDC_LIST_PLAN, OnClickListPlan)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CFeedFormView diagnostics
#ifdef _DEBUG
void CFeedFormView::AssertValid() const
{
CFormView::AssertValid();
}
void CFeedFormView::Dump(CDumpContext& dc) const
{
CFormView::Dump(dc);
}
#endif //_DEBUG
/////////////////////////////////////////////////////////////////////////////
// CFeedFormView message handlers
//定义全局变量
CString m_sear_steel_temp;
void CFeedFormView::OnInitialUpdate()
{
CFormView::OnInitialUpdate();
if (theApp.cn.is_opened==false) //打开数据库连接
theApp.open_mes();
else
{
}
CString temp_code; //初始化挂料界面的钢种下拉框的信息
resultset &rs_steelcode = *(theApp.cn).select("select STEEL_CODE from STEEL_GRADE");
for(;!rs_steelcode.eod();++rs_steelcode)
{
temp_code=result_CString(rs_steelcode,"STEEL_CODE");
int i=m_sear_steel.FindStringExact(0,temp_code);
if(i==-1)
m_sear_steel.AddString(temp_code);
}
rs_steelcode.release();
theApp.cn.close();
//设置称重数据显示框
m_led_weight.SetColor(COLORREF RGB(0,255,0), COLORREF RGB(0,255,0));
VERIFY(m_led_weight.ModifyDigiStyle(0, CDigiStatic::DS_NO_OFF));
m_weight_data.Format("%.2f",0);
m_led_weight.SetText(m_weight_data);
//设置LIST_CAST的框架大小
m_cast.SetWindowPos(NULL,0,0,1230,150,SWP_NOMOVE|SWP_NOZORDER | SWP_NOACTIVATE);
m_cast.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EDITLABELS);
m_cast.SetBkColor(RGB(224,255,255));
m_cast.SetTextBkColor(RGB(230 ,230 ,250));
m_cast.SetTextColor(RGB(85 ,26 ,139 ));
//设置LIST_PLAN的框架大小
m_plan.SetWindowPos(NULL,0,0,1230,164,SWP_NOMOVE|SWP_NOZORDER | SWP_NOACTIVATE);
m_plan.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EDITLABELS);
m_plan.SetBkColor(RGB(224,255,255));
m_plan.SetTextBkColor(RGB(230 ,230 ,250));
m_plan.SetTextColor(RGB(85 ,26 ,139 ));
//设置LIST_FEED的框架大小
m_feed.SetWindowPos(NULL,0,0,615,210,SWP_NOMOVE|SWP_NOZORDER | SWP_NOACTIVATE);
m_feed.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EDITLABELS);
m_feed.SetBkColor(RGB(224,255,255));
m_feed.SetTextBkColor(RGB(230 ,230 ,250));
m_feed.SetTextColor(RGB(85 ,26 ,139 ));
//设置LIST_AFTER_WEIGHT_QUEUE的框架大小
m_after_weight.SetWindowPos(NULL,0,0,579,210,SWP_NOMOVE|SWP_NOZORDER | SWP_NOACTIVATE);
m_after_weight.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES | LVS_EDITLABELS);
m_after_weight.SetBkColor(RGB(224,255,255));
m_after_weight.SetTextBkColor(RGB(230 ,230 ,250));
m_after_weight.SetTextColor(RGB(85 ,26 ,139 ));
//设置列表框LIST_CAST标题名字
int k=0;
m_cast.InsertColumn(k++,"炉号",LVCFMT_CENTER,100);
m_cast.InsertColumn(k++,"入库数(块)",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"已挂料数(块)",LVCFMT_CENTER,100);
m_cast.InsertColumn(k++,"库存数(块)",LVCFMT_CENTER,100);
m_cast.InsertColumn(k++,"板坯类型",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"钢种",LVCFMT_CENTER,60);
m_cast.InsertColumn(k++,"板坯厚度(mm)",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"板坯宽度(mm)",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"板坯长度(mm)",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"班次",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"操作者",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"入库日期",LVCFMT_CENTER,140);
m_cast.InsertColumn(k++,"C",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Si",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Mn",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"P",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"S",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Nb",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"V",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Ti",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Al",LVCFMT_CENTER,60);
m_cast.InsertColumn(k++,"Cu",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"Ni",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素1",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素1含量",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素2",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素2含量",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素3",LVCFMT_CENTER,80);
m_cast.InsertColumn(k++,"元素3含量",LVCFMT_CENTER,80);
//设置列表框LIST_FEED标题名字
m_feed.InsertColumn(0,"ID",LVCFMT_CENTER,120);
m_feed.InsertColumn(1,"挂料序号",LVCFMT_CENTER,80);
m_feed.InsertColumn(2,"入几号炉",LVCFMT_CENTER,80);
m_feed.InsertColumn(3,"钢种",LVCFMT_CENTER,80);
m_feed.InsertColumn(4,"板坯厚度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(5,"板坯宽度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(6,"板坯长度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(7,"炉号",LVCFMT_CENTER,80);
m_feed.InsertColumn(8,"计划号",LVCFMT_CENTER,120);
m_feed.InsertColumn(9,"产品厚度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(10,"产品宽度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(11,"产品长度(mm)",LVCFMT_CENTER,80);
m_feed.InsertColumn(12,"C",LVCFMT_CENTER,80);
m_feed.InsertColumn(13,"Si",LVCFMT_CENTER,80);
m_feed.InsertColumn(14,"Mn",LVCFMT_CENTER,40);
m_feed.InsertColumn(15,"S",LVCFMT_CENTER,80);
m_feed.InsertColumn(16,"P",LVCFMT_CENTER,80);
//设置列表框LIST_PLAN标题名字
int i=0;
m_plan.InsertColumn(i++,"计划号",LVCFMT_CENTER,125);
m_plan.InsertColumn(i++,"序号",LVCFMT_CENTER,45);
m_plan.InsertColumn(i++,"班次",LVCFMT_CENTER,45);
m_plan.InsertColumn(i++,"生产日期",LVCFMT_CENTER,95);
m_plan.InsertColumn(i++,"钢 种",LVCFMT_LEFT,60);
m_plan.InsertColumn(i++,"坯料 厚×宽×长",LVCFMT_LEFT,169);
m_plan.InsertColumn(i++,"轧制规格 厚×宽×长",LVCFMT_LEFT,163);
m_plan.InsertColumn(i++,"计划产量(块)",LVCFMT_CENTER,106);
m_plan.InsertColumn(i++,"未挂料(块)",LVCFMT_CENTER,95);
m_plan.InsertColumn(i++,"已挂料(块)",LVCFMT_CENTER,95);
m_plan.InsertColumn(i++,"计划外(块)",LVCFMT_CENTER,95);
m_plan.InsertColumn(i++,"总重量(吨)",LVCFMT_CENTER,110);
m_plan.InsertColumn(i++,"轧制公差厚度 mm",LVCFMT_LEFT,130);
m_plan.InsertColumn(i++,"轧制公差宽度 mm",LVCFMT_LEFT,130);
m_plan.InsertColumn(i++,"轧制公差长度 mm",LVCFMT_LEFT,130);
m_plan.InsertColumn(i++,"轧制要求",LVCFMT_LEFT,150);
m_plan.InsertColumn(i++,"定尺1长度mm",LVCFMT_LEFT,98);
m_plan.InsertColumn(i++,"定尺1数量",LVCFMT_LEFT,92);
m_plan.InsertColumn(i++,"定尺2长度mm",LVCFMT_LEFT,98);
m_plan.InsertColumn(i++,"定尺2数量",LVCFMT_LEFT,92);
m_plan.InsertColumn(i++,"剪切宽度",LVCFMT_LEFT,90);
m_plan.InsertColumn(i++,"切头尾",LVCFMT_CENTER,60);
m_plan.InsertColumn(i++,"其他剪切要求",LVCFMT_LEFT,110);
m_plan.InsertColumn(i++,"标示要求",LVCFMT_LEFT,100);
m_plan.InsertColumn(i++,"定轧",LVCFMT_CENTER,100);
m_plan.InsertColumn(i++,"机时产量(吨)",LVCFMT_LEFT,105);
m_plan.InsertColumn(i++,"班次工作时间",LVCFMT_CENTER,105);
m_plan.InsertColumn(i++,"备注",LVCFMT_LEFT,150);
m_plan.InsertColumn(i++,"创建者",LVCFMT_LEFT,60);
//设置列表框LIST_AFTER_WEIGHT标题名字
m_after_weight.InsertColumn(0,"ID",LVCFMT_CENTER,140);
m_after_weight.InsertColumn(1,"序号",LVCFMT_CENTER,80);
m_after_weight.InsertColumn(2,"炉号",LVCFMT_CENTER,100);
m_after_weight.InsertColumn(3,"时间",LVCFMT_CENTER,140);
m_after_weight.InsertColumn(4,"轧制坯次号",LVCFMT_CENTER,140);
//设置列表框控件字体
CFont m_ListFont;
m_ListFont.CreateFont(16,0,0,0,FW_NORMAL, 0,0,0,DEFAULT_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,DEFAULT_QUALITY, DEFAULT_PITCH | FF_DONTCARE, "Times New Roman");
m_cast.SetFont(&m_ListFont);
m_feed.SetFont(&m_ListFont);
m_plan.SetFont(&m_ListFont);
m_after_weight.SetFont(&m_ListFont);
m_shift.SetCurSel(0);//初始化主页面选择的班次
m_fur_no.SetCurSel(0);//初始化主页面选择的入炉号
m_sear_steel.SetCurSel(0);//初始化主页面查询板坯信息条件的钢种
m_sear_steel.GetLBText(0,m_sear_steel_temp);
m_feed_searchslab_cond.SetCurSel(0);
//OPC通讯程序初始化 memory mapping,alloc 1M memory
strServerName="Process Control Communication Service";
hRecvMap=CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE | SEC_COMMIT, 0, 3*1024*1024, "MemoryMap");
if (hRecvMap!=NULL)
{
lpData=(LPBYTE)MapViewOfFile(hRecvMap,FILE_MAP_WRITE,0,0,0);
if (lpData==NULL)
{
CloseHandle(hRecvMap);
hRecvMap=NULL;
}
else
{
pOPCMemory=(struct HMIDefine *)((BYTE *)lpData+(1024+512)*1024);
m_isMemoryMap=true;
}
}
opcTotalBytes=sizeof(HMIDefine);
//初始化页面的模式切换按钮
int flag=pOPCMemory->m_HMIToL2VarHold.W_confirm_state;
if (flag==1)
{
CWnd* pWnd = GetDlgItem(IDC_WEIGHT_HAND);
m_led_weight_mode.SetLedColor(1);
if(pWnd->IsWindowEnabled())
pWnd->EnableWindow(FALSE);
else
pWnd->EnableWindow(TRUE);
UpdateData(TRUE);
}
else
{
CWnd* pWnd = GetDlgItem(IDC_WEIGHT_HAND);
m_led_weight_mode.SetLedColor(0);
pWnd->EnableWindow(TRUE);
}
//初始化时读取称重等待表和炉前等待队列表
m_feed.DeleteAllItems();
m_after_weight.DeleteAllItems();
theApp.open_mes();
resultset &rs_feed = *(theApp.cn).select ("select * FROM TGZB.TRK_WEIGHT_WAIT@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_feed = *(theApp.cn).select ("select * FROM TRK_WEIGHT_WAIT ORDER BY SLAB_ORDER");
OnFeed_List_Update(m_feed,rs_feed);
resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE@MES_L2.US.ORACLE.COM ORDER BY SLAB_ORDER");
// resultset &rs_before_furnace = *(theApp.cn).select ("select * FROM BEFORE_FURNACE ORDER BY SLAB_ORDER");
Before_furnace_List_Update(m_after_weight,rs_before_furnace);
theApp.cn.close();
}
void CFeedFormView::OnSearchCast() //按照条件查询板坯信息
{
UpdateData(true);
m_cast.DeleteAllItems();
int condic_no = m_feed_searchslab_cond.GetCurSel();
CString cond_steel_code,cond_furcode,si,cond_slab_h,cond_slab_w,cond_slab_l;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -