You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

728 lines
26 KiB
C++

#include "stdafx.h"
#include "LaiPuLaser.h"
#include "afxdialogex.h"
#include "DlgChildRecipe.h"
#include "LogMgr.h"
#include "AuthorityMgr.h"
#include "WaferRecipeDataMgr.h"
#include "RecipeMgr.h"
#include "ProgramLaserTuiHuo.h"
#include "CStringFuc.h"
#include "MsgBox.h"
#include "LogMgr.h"
#include "GlobalFunction.h"
#include "WaferRecipeDataMgr.h"
#include "TimingProgressMgr.h"
#include "Layer.h"
#include "GlobalFunction.h"
#include "Laser.h"
#include "WorkFileMgr.h"
#include "WorkRecord.h"
#include "LanguageMgr.h"
#include "DlgLayerViewShow.h"
#include "GlobalDrawMgr.h"
#include "DlgRecipeCompare.h"
#include "DlgDeviceMain.h"
#include "DlgChildParaHistory.h"
#include "FileMgr.h"
#include "DlgOffsetTable.h"
IMPLEMENT_DYNAMIC(CDlgChildRecipe, CMyDlgView)
BEGIN_MESSAGE_MAP(CDlgChildRecipe, CMyDlgView)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_RECIPE_NAME_BTN, &CDlgChildRecipe::OnBnClickedRecipeNameBtn)
ON_BN_CLICKED(IDC_GROUP_NAME_BTN, &CDlgChildRecipe::OnBnClickedGroupNameBtn)
ON_BN_CLICKED(IDC_RECIPE_COPY_BTN, &CDlgChildRecipe::OnBnClickedRecipeCopyBtn)
ON_BN_CLICKED(IDC_RECIPE_PASTE_BTN, &CDlgChildRecipe::OnBnClickedRecipeMoveBtn)
ON_BN_CLICKED(IDC_OPEN_VIEW_DLG_BTN, &CDlgChildRecipe::OnBnClickedOpenViewDlgBtn)
ON_BN_CLICKED(NEW_ADD_GROUP_BTN, &CDlgChildRecipe::OnBnClickedAddGroupBtn)
ON_BN_CLICKED(NEW_DEL_GROUP_BTN, &CDlgChildRecipe::OnBnClickedDelGroupBtn)
ON_BN_CLICKED(NEW_ADD_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedAddRecipeBtn)
ON_BN_CLICKED(NEW_DEL_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedDelRecipeBtn)
ON_BN_CLICKED(NEW_RECIPE_TO_EDIT_BTN, &CDlgChildRecipe::OnBnClickedRecipeToEditBtn)
ON_CBN_SELCHANGE(NEW_RECIPE_GROUP_COMBO, &CDlgChildRecipe::OnCbnSelchangeNewRecipeGroupCombo)
ON_NOTIFY(NM_CLICK, NEW_GROUP_RECIPE_LIST, &CDlgChildRecipe::OnNMClickGroupRecipeList)
ON_NOTIFY(NM_CLICK, NEW_EDIT_RECIPE_LIST, &CDlgChildRecipe::OnNMClickEditRecipeList)
ON_NOTIFY(NM_CLICK, NEW_SUB_RECIPE_LIST, &CDlgChildRecipe::OnNMClickEditSubRecipeList)
ON_BN_CLICKED(IDC_EDIT_PAR_SAVE_BTN, &CDlgChildRecipe::OnBnClickedEditParSaveBtn)
ON_BN_CLICKED(NEW_ADD_SUB_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedAddSubRecipeBtn)
ON_BN_CLICKED(NEW_DEL_SUB_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedDelSubRecipeBtn)
ON_BN_CLICKED(NEW_SUB_RECIPE_MOVE_UP, &CDlgChildRecipe::OnBnClickedSubRecipeMoveUp)
ON_BN_CLICKED(NEW_SUB_RECIPE_MOVE_DOWN, &CDlgChildRecipe::OnBnClickedSubRecipeMoveDown)
ON_BN_CLICKED(NEW_RENAME_SUB_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedRenameSubRecipeBtn)
ON_BN_CLICKED(IDC_RCP_COMPARE_BTN, &CDlgChildRecipe::OnBnClickedRcpCompareBtn)
ON_EN_KILLFOCUS(IDC_EDIT_PAR_DOUBLE, &CDlgChildRecipe::OnEnKillfocusDoubleEdit)
ON_CBN_SELCHANGE(IDC_SEL_SCAN_AREA_COMBO, &CDlgChildRecipe::OnCbnSelchangeSelScanAreaCombo)
ON_CBN_SELCHANGE(IDC_SEL_AREA_IDX_COMBO, &CDlgChildRecipe::OnCbnSelchangeSelAreaIdxCombo)
ON_CBN_SELCHANGE(IDC_SEL_BOOL_VAL_COMBO, &CDlgChildRecipe::OnCbnSelchangeSelBoolValCombo)
ON_CBN_SELCHANGE(IDC_SEL_OFFSET_TAB_COMBO, &CDlgChildRecipe::OnCbnSelchangeSelOffsetTableCombo)
ON_NOTIFY(NM_CUSTOMDRAW, NEW_EDIT_RECIPE_LIST, &CDlgChildRecipe::OnDrawEditRecipeList)
ON_NOTIFY(NM_CUSTOMDRAW, NEW_EDIT_RECIPE_INFO_LIST, &CDlgChildRecipe::OnDrawEditRecipeInfoList)
ON_BN_CLICKED(IDC_RCP_HISTORY_BTN, &CDlgChildRecipe::OnBnClickedRcpHistoryBtn)
ON_BN_CLICKED(IDC_RCP_OFFSET_TAB, &CDlgChildRecipe::OnBnClickedRcpOffsetTab)
ON_BN_CLICKED(NEW_UPDATE_RECIPE_BTN, &CDlgChildRecipe::OnBnClickedUpdateRecipeBtn)
ON_NOTIFY(NM_CLICK, NEW_EDIT_RECIPE_INFO_LIST, &CDlgChildRecipe::OnNMClickEditRecipeInfoList)
END_MESSAGE_MAP()
CDlgChildRecipe::CDlgChildRecipe(CWnd* pParent /*=NULL*/)
: CMyDlgView(CDlgChildRecipe::IDD, pParent)
{
InitParIDVec();
m_EditRecipeParVal = 0;
}
CDlgChildRecipe::~CDlgChildRecipe()
{
}
void CDlgChildRecipe::DoDataExchange(CDataExchange* pDX)
{
CMyDlgView::DoDataExchange(pDX);
DDX_Control(pDX, NEW_RECIPE_GROUP_COMBO, m_NewRecipeGroupComb);
DDX_Control(pDX, NEW_GROUP_RECIPE_LIST, m_GroupRecipeList);
DDX_Control(pDX, NEW_EDIT_RECIPE_LIST, m_EditRecipeList);
DDX_Control(pDX, NEW_SUB_RECIPE_LIST, m_EditSubRecipeList);
DDX_Control(pDX, NEW_EDIT_RECIPE_INFO_LIST, m_EditRecipeInfoList);
DDX_Control(pDX, IDC_SEL_SCAN_AREA_COMBO, m_SelScanAreaComb);
DDX_Control(pDX, IDC_SEL_AREA_IDX_COMBO, m_SelScanAreaIdxComb);
DDX_Control(pDX, IDC_SEL_BOOL_VAL_COMBO, m_SelBoolValComb);
DDX_Control(pDX, IDC_SEL_OFFSET_TAB_COMBO, m_SelOffsetTableComb);
DDX_Text(pDX,IDC_EDIT_PAR_DOUBLE,m_EditRecipeParVal);
DDX_Control(pDX, IDC_EDIT_PAR_DOUBLE, m_DoubleParEdit);
}
void CDlgChildRecipe::OnTimer(UINT nIDEvent)
{
CDialog::OnTimer(nIDEvent);
}
BOOL CDlgChildRecipe::OnInitDialog()
{
CMyDlgView::OnInitDialog();
#ifdef __OFFSET_TABLE__
GetDlgItem(IDC_RCP_OFFSET_TAB)->ShowWindow(SW_SHOW);
#endif
UpdateData(FALSE);
return TRUE;
}
void CDlgChildRecipe::UpdateLanguageTxt()
{
}
void CDlgChildRecipe::SetTextCtrlItemID()
{
}
void CDlgChildRecipe::ChangeItemState()
{
bool bEnable = true;
}
void CDlgChildRecipe::OnDrawEditRecipeList( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
if( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
COLORREF crText, crBkgnd;
crText = RGB_BLACK;
crBkgnd = RGB_WHITE;
int iRow = pLVCD->nmcd.dwItemSpec;//<2F>к<EFBFBD>
int iCol = Rcp_List_Val_Col;
if(iCol == pLVCD->iSubItem)//<2F>к<EFBFBD>
{
if(gRecipeMgr->IsErrRangeParIdx(iRow))//<2F><><EFBFBD>ݳ<EFBFBD><DDB3><EFBFBD>Χ
crBkgnd = RGB_RED;
else if(gRecipeMgr->IsChangeParIdx(iRow))//<2F>ı<EFBFBD><C4B1>IJ<EFBFBD><C4B2><EFBFBD>
crBkgnd = RGB_YELLOW;
else if(gRecipeMgr->IsInvalidParIdx(iRow))//<2F><>Ч<EFBFBD>IJ<EFBFBD><C4B2><EFBFBD>
crBkgnd = RGB_GRAY1;
}
pLVCD->clrText = crText;
pLVCD->clrTextBk = crBkgnd;
*pResult = CDRF_DODEFAULT;
}
}
void CDlgChildRecipe::OnDrawEditRecipeInfoList( NMHDR* pNMHDR, LRESULT* pResult )
{
NMLVCUSTOMDRAW* pLVCD = reinterpret_cast<NMLVCUSTOMDRAW*>( pNMHDR );
*pResult = CDRF_DODEFAULT;
if( CDDS_PREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYITEMDRAW;
}
else if( CDDS_ITEMPREPAINT == pLVCD->nmcd.dwDrawStage )
{
*pResult = CDRF_NOTIFYSUBITEMDRAW;
}
else if((CDDS_ITEMPREPAINT | CDDS_SUBITEM) == pLVCD->nmcd.dwDrawStage )
{
COLORREF crText, crBkgnd;
crText = RGB_BLACK;
crBkgnd = RGB_WHITE;
int iRow = pLVCD->nmcd.dwItemSpec;//<2F>к<EFBFBD>
int iCol = Rcp_List_Val_Col;
if(iCol == pLVCD->iSubItem)//<2F>к<EFBFBD>
{
if(gRecipeMgr->IsErrRangeParIdx(iRow+Rcp_CalInfo_Start_Idx))
crBkgnd = RGB_RED;
}
pLVCD->clrText = crText;
pLVCD->clrTextBk = crBkgnd;
*pResult = CDRF_DODEFAULT;
}
}
#if 1
//<2F><>ʼ<EFBFBD><CABC><EFBFBD>Ի<EFBFBD><D4BB><EFBFBD><EFBFBD>ؼ<EFBFBD>
void CDlgChildRecipe::InitDialogItem()
{
gRecipeMgr->BindingRecipeGroupComb(&m_NewRecipeGroupComb);
gRecipeMgr->InitGroupRecipeList(m_GroupRecipeList);
gRecipeMgr->InitEditRecipeList(m_EditRecipeList,true);
gRecipeMgr->InitEditRecipeList(m_EditRecipeInfoList,true);
gRecipeMgr->InitEditSubRecipeList(m_EditSubRecipeList);
UpdateData(FALSE);
}
void CDlgChildRecipe::InitParIDVec()
{
}
//<2F><><EFBFBD>µ<EFBFBD>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD>recipe <20><>Ϣ
void CDlgChildRecipe::UpdateRecipeParInfo()
{
}
//<2F><><EFBFBD>浱ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD>recipe
bool CDlgChildRecipe::SaveCurSelRecipe()
{
return true;
}
#endif
#if 1
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
void CDlgChildRecipe::UpdateAreaIdxCombo()
{
CObjContainer &ObjContainer = gLayer.GetObjContainer();
int AreaCnt = ObjContainer.GetScanAreaCnt();
m_SelScanAreaIdxComb.ResetContent();//<2F><><EFBFBD><EFBFBD>
int idx = 0;
for(int k=0;k<AreaCnt;k++)
{
CString Str;
if(k<9)
Str.Format("[0%d]",k+1);
else
Str.Format("[%d]",k+1);
Str += "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>";
m_SelScanAreaIdxComb.InsertString(idx++,Str);
}
}
#endif
#if 1
//<2F><><EFBFBD>õ<EFBFBD>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD>recipe <20><><EFBFBD><EFBFBD>
void CDlgChildRecipe::OnBnClickedRecipeNameBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRecipeNameBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_RecipeName))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
GetDlgItem(IDC_CUR_EDIT_RCP_PATH)->SetWindowText(gRecipeMgr->GetCurEditRecipeInfo());
}
//<2F><><EFBFBD>õ<EFBFBD>ǰѡ<C7B0><D1A1><EFBFBD><EFBFBD>gourp <20><><EFBFBD><EFBFBD>
void CDlgChildRecipe::OnBnClickedGroupNameBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedGroupNameBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_GroupName))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
GetDlgItem(IDC_CUR_EDIT_RCP_PATH)->SetWindowText(gRecipeMgr->GetCurEditRecipeInfo());
}
//<2F><><EFBFBD>Ƶ<EFBFBD>ǰѡ<C7B0>е<EFBFBD>recipe
void CDlgChildRecipe::OnBnClickedRecipeCopyBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRecipeCopyBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_CopyRecipe))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
}
//ճ<><D5B3><EFBFBD><EFBFBD>ǰѡ<C7B0>е<EFBFBD>recipe
void CDlgChildRecipe::OnBnClickedRecipeMoveBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRecipeMoveBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_MoveRecipe))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
ResetEditRecipeItem();//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><E0BCAD>recipe <20><>Ϣ
}
void CDlgChildRecipe::OnBnClickedOpenViewDlgBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedOpenViewDlgBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
if(gDraw->IsbDlgLayerViewShow())
{
gLogMgr->WriteDebugLog("Cannot Re-Open");
return;
}
CDlgLayerViewShow *dlg = new CDlgLayerViewShow;
dlg->Create(IDD_LAYER_VIEW_SHOW_DLG, this);
dlg->ShowWindow(SW_SHOW);
}
#endif
#if 1
void CDlgChildRecipe::OnBnClickedAddGroupBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedAddGroupBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_AddGroup))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
}
void CDlgChildRecipe::OnBnClickedDelGroupBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedDelGroupBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_DelRecipeGroup",true))
return;
CMsgBox MsgBox;
MsgBox.Show("ע<EFBFBD><EFBFBD><><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E1BDAB><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>recipe <20><>ɾ<EFBFBD><C9BE>!");
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_DelGroup))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
}
void CDlgChildRecipe::OnBnClickedAddRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedAddRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_AddRecipe))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
}
void CDlgChildRecipe::OnBnClickedDelRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedDelRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_DelRecipe))
return;
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
ResetEditRecipeItem();//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><E0BCAD>recipe <20><>Ϣ
}
void CDlgChildRecipe::OnBnClickedRecipeToEditBtn()
{
}
void CDlgChildRecipe::OnCbnSelchangeNewRecipeGroupCombo()
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
int Idx = m_NewRecipeGroupComb.GetCurSel();
gRecipeMgr->SetCurSelGourpIdx(Idx);
gRecipeMgr->UpdateGroupRecipeList(m_GroupRecipeList);
ResetEditRecipeItem();//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><E0BCAD>recipe <20><>Ϣ
}
//<2F><><EFBFBD><EFBFBD>recipe <20>б<EFBFBD>
void CDlgChildRecipe::OnNMClickGroupRecipeList(NMHDR *pNMHDR, LRESULT *pResult)
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
*pResult = 0;
int Idx = GetCurListIdx(m_GroupRecipeList);
if(Idx>=0)
{
gRecipeMgr->OnSelRecipeIdxChange(Idx);
//<2F><><EFBFBD><EFBFBD>Ϊ<EFBFBD><CEAA>ǰ<EFBFBD><EFBFBD><E0BCAD>recipe
if(gRecipeMgr->ReadEditRecipeFromFile())
{
gRecipeMgr->UpdateEditRecipeList(m_EditRecipeList,m_EditRecipeInfoList);
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
CString EditRecipePath = gRecipeMgr->GetCurEditRecipeInfo();
CFileMgr FileMgr;
m_CurSelRecipeName = FileMgr.GetFileNameFromPath(EditRecipePath,true);//<2F><><EFBFBD>浱ǰѡ<C7B0><D1A1>recipe <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
GetDlgItem(IDC_CUR_EDIT_RCP_PATH)->SetWindowText(EditRecipePath);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
gWaferRecipeDataMgr->InitScanAreaComb(m_SelScanAreaComb);
#ifdef __OFFSET_TABLE__
gWaferRecipeDataMgr->InitOffsetTableComb(m_SelOffsetTableComb);
#endif
gRecipeMgr->UpdatParBoolComb(m_SelBoolValComb);
HideEditRecipeParItem();
gRecipeMgr->CreatCurEditRecipeScanPath();
}
}
}
void CDlgChildRecipe::OnNMClickEditSubRecipeList(NMHDR *pNMHDR, LRESULT *pResult)
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
*pResult = 0;
int Idx = GetCurListIdx(m_EditSubRecipeList);
if(Idx>=0)
{
gRecipeMgr->SetSubRecipeIdx(Idx);
gRecipeMgr->UpdateEditRecipeList(m_EditRecipeList,m_EditRecipeInfoList);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
gRecipeMgr->CreatCurEditRecipeScanPath();
UpdateData(FALSE);
}
}
#endif
void CDlgChildRecipe::OnBnClickedAddSubRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedAddSubRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_AddSubRecipe))
return;
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
gRecipeMgr->UpdateEditRecipeList(m_EditRecipeList,m_EditRecipeInfoList);
}
void CDlgChildRecipe::OnBnClickedDelSubRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedDelSubRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_DelSubRecipe))
return;
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
}
void CDlgChildRecipe::OnBnClickedRenameSubRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRenameSubRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!gRecipeMgr->EditRecipeByCtrlType(_RecipeCtrl_SubRecipeName))
return;
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
gRecipeMgr->UpdateEditRecipeList(m_EditRecipeList,m_EditRecipeInfoList);
}
//<2F><><EFBFBD>õ<EFBFBD>ǰ<EFBFBD><EFBFBD><E0BCAD>recipe <20><>Ϣ
void CDlgChildRecipe::ResetEditRecipeItem()
{
gRecipeMgr->SetCurSelRecipeName("");
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
gRecipeMgr->UpdateEditRecipeList(m_EditRecipeList,m_EditRecipeInfoList);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
GetDlgItem(IDC_CUR_EDIT_RCP_PATH)->SetWindowText(gRecipeMgr->GetCurEditRecipeInfo());
HideEditRecipeParItem();
}
void CDlgChildRecipe::HideEditRecipeParItem()
{
GetDlgItem(IDC_EDIT_PAR_DOUBLE)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEL_BOOL_VAL_COMBO)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEL_SCAN_AREA_COMBO)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEL_AREA_IDX_COMBO)->ShowWindow(SW_HIDE);
GetDlgItem(IDC_SEL_OFFSET_TAB_COMBO)->ShowWindow(SW_HIDE);
}
void CDlgChildRecipe::OnBnClickedSubRecipeMoveUp()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedSubRecipeMoveUp");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(gRecipeMgr->MoveSubRecipe(true))
{
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
}
}
void CDlgChildRecipe::OnBnClickedSubRecipeMoveDown()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedSubRecipeMoveDown");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(gRecipeMgr->MoveSubRecipe(false))
{
gRecipeMgr->UpdateEditSubRecipeList(m_EditSubRecipeList);
GetDlgItem(IDC_CUR_EDIT_SUB_RCP_NAME)->SetWindowText(gRecipeMgr->GetCurEditSubRecipeInfo());
}
}
//recipe <20>Ƚ<EFBFBD>
void CDlgChildRecipe::OnBnClickedRcpCompareBtn()
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
CDlgRecipeCompare dlg;
dlg.DoModal();
}
#if 1
//<2F><><EFBFBD><EFBFBD>recipe <20><><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
void CDlgChildRecipe::OnNMClickEditRecipeList(NMHDR *pNMHDR, LRESULT *pResult)
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",false))
return;
HideEditRecipeParItem();
*pResult = 0;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int Row = pNMListView->iItem;
if(Row >= 0)//<2F>к<EFBFBD>
{
CListCtrl &ListCtrl = m_EditRecipeList;
int Col = pNMListView->iSubItem;
if (Col == Rcp_List_Val_Col)
{
//<2F><>¼<EFBFBD><C2BC>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD>к<EFBFBD>
m_row = Row;
m_col = Col;
CRect rc;
ListCtrl.GetSubItemRect(Row,Col, LVIR_LABEL, rc);//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ľ<EFBFBD><C4BE><EFBFBD>
ListCtrl.ClientToScreen(&rc);
ScreenToClient(&rc);
CString s = ListCtrl.GetItemText(Row,Col);//ȡ<><C8A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if((Row <Rcp_AreaName_Idx)
||(Row == Rcp_RunTimes_Idx)
)//<2F><EFBFBD><E0BCAD>
{
CEdit &Edit = m_DoubleParEdit;
Edit.SetWindowText(s);//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><E0BCAD><EFBFBD><EFBFBD>
Edit.MoveWindow(&rc);//<2F><><EFBFBD><EFBFBD><E0BCAD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Edit.ShowWindow(SW_SHOW);//<2F><>ʾ<EFBFBD><EFBFBD><E0BCAD>
Edit.SetFocus();//ʹ<><EFBFBD><E0BCAD>ȡ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
Edit.CreateSolidCaret(1, rc.Height() - 5);//<2F><><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Edit.ShowCaret();//<2F><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD>
Edit.SetSel(0, -1);//ʹ<><CAB9><EFBFBD><EFBFBD><EFBFBD>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
else//<2F>ڵ<EFBFBD>Ԫ<EFBFBD><D4AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD><D0B1><EFBFBD>
{
CComboBox *pComb = NULL;
if(Row ==Rcp_AreaName_Idx)
{
pComb = &m_SelScanAreaComb;
}
else if(Row ==Rcp_AreaIdx_Idx)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ<EFBFBD><D6B5><EFBFBD><EFBFBD><EFBFBD>б<EFBFBD>
UpdateAreaIdxCombo();
pComb = &m_SelScanAreaIdxComb;
int Idx = CStringToInt(s);
pComb->SetCurSel(Idx-1);
}
else if(Row ==Rcp_N2_Idx)
{
pComb = &m_SelBoolValComb;
int Idx = (s==BOOL_STR_ON)?(0):(1);
pComb->SetCurSel(Idx);
}
else if (Row == Rcp_UseCurN2Val_Idx)
{
pComb = &m_SelBoolValComb;
int Idx = (s == BOOL_STR_ON) ? (0) : (1);
pComb->SetCurSel(Idx);
}
#ifdef __OFFSET_TABLE__
else if(Row ==Rcp_OffsetTab_Idx)
{
pComb = &m_SelOffsetTableComb;
}
#endif
if(pComb)
{
pComb->SetWindowText(s);
pComb->MoveWindow(&rc);//<2F><><EFBFBD><EFBFBD><E0BCAD><EFBFBD>ƶ<EFBFBD><C6B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E6A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
pComb->ShowDropDown();//<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>
pComb->ShowWindow(SW_SHOW);//<2F><>ʾ<EFBFBD><EFBFBD><E0BCAD>
pComb->SetFocus();//ʹ<><EFBFBD><E0BCAD>ȡ<EFBFBD>ý<EFBFBD><C3BD><EFBFBD>
}
}
}
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>Ϣ
{
CString Str = gRecipeMgr->GetShowParText(Row);
GetDlgItem(IDC_ShowSubRcpInfo)->SetWindowText(Str);
}
}
}
//Edit <20><EFBFBD><EBBDB9>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊlist <20><>ֵ
void CDlgChildRecipe::OnEnKillfocusDoubleEdit()
{
m_DoubleParEdit.ShowWindow(SW_HIDE);
if(m_col < 0 || m_row < 0)
return;
CString key;
m_DoubleParEdit.GetWindowText(key);
m_EditRecipeList.SetItemText(m_row, m_col, key);
}
//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
void CDlgChildRecipe::OnCbnSelchangeSelScanAreaCombo()
{
gLogMgr->WriteDebugLog("Func---->OnCbnSelchangeSelScanAreaCombo");
int SelIdx = m_SelScanAreaComb.GetCurSel();
CString s;
s.Format("SelIdx = %d",SelIdx);
gLogMgr->WriteDebugLog(s);
//<2F><><EFBFBD><EFBFBD>SelIdx <20><>Ӧ<EFBFBD><D3A6>ɨ<EFBFBD><C9A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
CString AreaName = gWaferRecipeDataMgr->SelScanArea(SelIdx);
//Ĭ<><C4AC>ѡ<EFBFBD><D1A1><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
m_EditRecipeList.SetItemText(Rcp_AreaIdx_Idx,Rcp_List_Val_Col,Int2CString(1));
//<2F><><EFBFBD><EFBFBD>ɨ<EFBFBD><C9A8>·<EFBFBD><C2B7>(<28><>һ<EFBFBD><D2BB>)
gRecipeMgr->CreatScanPath(AreaName,0);
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊlist <20><>item
m_SelScanAreaComb.ShowWindow(SW_HIDE);
if(m_col < 0 || m_row < 0)
return;
m_EditRecipeList.SetItemText(m_row, m_col, AreaName);
}
//ѡ<><D1A1>OffsetTable <20>ļ<EFBFBD>
void CDlgChildRecipe::OnCbnSelchangeSelOffsetTableCombo()
{
gLogMgr->WriteDebugLog("Func---->OnCbnSelchangeSelOffsetTableCombo");
int SelIdx = m_SelOffsetTableComb.GetCurSel();
CString s;
s.Format("SelIdx = %d",SelIdx);
gLogMgr->WriteDebugLog(s);
CString OffsetTableName = gWaferRecipeDataMgr->SelOffsetTable(SelIdx);
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊlist <20><>item
m_SelOffsetTableComb.ShowWindow(SW_HIDE);
if(m_col < 0 || m_row < 0)
return;
m_EditRecipeList.SetItemText(m_row, m_col, OffsetTableName);
}
//ѡ<><D1A1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CDlgChildRecipe::OnCbnSelchangeSelAreaIdxCombo()
{
int SelIdx = m_SelScanAreaIdxComb.GetCurSel();
CString AreaName = m_EditRecipeList.GetItemText(Rcp_AreaName_Idx,Rcp_List_Val_Col);//ȡ<><C8A1>Area <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
gRecipeMgr->CreatScanPath(AreaName,SelIdx);
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊlist <20><>item
m_SelScanAreaIdxComb.ShowWindow(SW_HIDE);
if(m_col < 0 || m_row < 0)
return;
m_EditRecipeList.SetItemText(m_row, m_col, Int2CString(SelIdx+1));
}
void CDlgChildRecipe::OnCbnSelchangeSelBoolValCombo()
{
int SelIdx = m_SelBoolValComb.GetCurSel();
//<2F><><EFBFBD>ļ<EFBFBD><C4BC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊlist <20><>item
m_SelBoolValComb.ShowWindow(SW_HIDE);
if(m_col < 0 || m_row < 0)
return;
CString s = (SelIdx==0)?(BOOL_STR_ON):(BOOL_STR_OFF);
m_EditRecipeList.SetItemText(m_row, m_col,s);
}
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
void CDlgChildRecipe::OnBnClickedEditParSaveBtn()
{
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_EditRecipe",true))
return;
if(!UpdateData(TRUE))
return;
gRecipeMgr->SaveEditRecipePar(m_EditRecipeList,m_EditRecipeInfoList);
}
#endif
//<2F><>ѯ<EFBFBD><D1AF>ǰѡ<C7B0><D1A1>recipe <20><>history
void CDlgChildRecipe::OnBnClickedRcpHistoryBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRcpHistoryBtn");
CString RecipeName = m_CurSelRecipeName;
if(RecipeName!="")
{
CDlgChildParaHistory *pDlg = dynamic_cast<CDlgChildParaHistory*>(gChildParaHistory);
pDlg->SearchByName(RecipeName);
gDlgDeviceMain->OnBnClickedRecordBtn();
gDlgDeviceMain->OnBnClickedModuleChildViewBtn4();
}
}
void CDlgChildRecipe::OnBnClickedRcpOffsetTab()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedRcpOffsetTab");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
CDlgOffsetTable dlg;
dlg.DoModal();
#ifdef __OFFSET_TABLE__
gWaferRecipeDataMgr->InitOffsetTableComb(m_SelOffsetTableComb);
#endif
}
//ǿ<><C7BF>ˢ<EFBFBD><CBA2>Recipe <20><>Ϣ
void CDlgChildRecipe::OnBnClickedUpdateRecipeBtn()
{
gLogMgr->WriteDebugLog("Func---->OnBnClickedUpdateRecipeBtn");
if(!gAuthorityMgr->CheckAuthorityByName("AUTHORITY_CheckRecipe",true))
return;
CMsgBox MsgBox;
if(MsgBox.ConfirmOkCancel("ˢ<EFBFBD><EFBFBD>recipe <20>б<EFBFBD>?"))
{
gRecipeMgr->UpdateRecipeGroupInfo();
m_NewRecipeGroupComb.SetCurSel(-1);
OnCbnSelchangeNewRecipeGroupCombo();
}
}
void CDlgChildRecipe::OnNMClickEditRecipeInfoList(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: <20>ڴ<EFBFBD><DAB4><EFBFBD><EFBFBD>ӿؼ<D3BF>֪ͨ<CDA8><D6AA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
*pResult = 0;
NM_LISTVIEW* pNMListView = (NM_LISTVIEW*)pNMHDR;
int Row = pNMListView->iItem;
if (Row >= 0)//<2F>к<EFBFBD>
{
//<2F><>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϸ<EFBFBD><CFB8>Ϣ
{
CString Str = gRecipeMgr->GetShowParText(Rcp_CalInfo_Start_Idx + Row);
GetDlgItem(IDC_ShowSubRcpInfo)->SetWindowText(Str);
}
}
}