⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 feedformview.cpp

📁 开发环境为VC++ 的数据库管理系统
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// 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 + -