// ManagerEffectivityDlg.h : header file
//
//{{AFX_INCLUDES()

//}}AFX_INCLUDES

#define WM_SCR WM_USER+300
#if !defined(AFX_MANAGEREFFECTIVITYDLG_H__96680F56_B1FD_4BCA_BAEC_D8CF175645FF__INCLUDED_)
#define AFX_MANAGEREFFECTIVITYDLG_H__96680F56_B1FD_4BCA_BAEC_D8CF175645FF__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "apl_gui.h"
#include "resource.h"
#include "ListEff.h"
#include "apl_api.h"
#include "ResizableDialog.h" 

/////////////////////////////////////////////////////////////////////////////
// CManagerEffectivityDlg dialog

class CaplInstance;
class CaplEntity;
class CEffProd;

class CManagerEffectivityDlg : public CResizableDialog 
{
// Construction
public:
	CManagerEffectivityDlg(CWnd* pParent = NULL);	// standard constructor


	void DrawOfSelTab();//вызов функций перерисовки, в зависимости от выбранной закладки
						
	void DrawEffectivitySerial();//отрисовка таблицы применяемости по дате
								 
	void DrawEffectivityDate();//отрисовка таблицы применяемости по серийному номеру
							   
	bool CmpSerialNum(CString string1, CString string2);//функция сравнения серийных номеров
							
	void CalcTabSerial();//вычисление массивов для отрисовки таблицы применямости по серийному номеру
						 
	bool MoveRow(int from, int to);//перемещение строки
	void CalcTabDate();//вычисление массивов для отрисовки таблицы применямости по серийному номеру
					  
	int sizeDates;//размерность массива ArrDates
	
	CStringArray ArrDates;//массив содержащий строки, для заполнения колонок таблицы применямости
						  
//	CUIntArray sdateUInt;//массив, содержащий даты, пересчитанные в целые знаечния
	CStringArray m_sdateUInt;
						 
	CUIntArray Uncell;//массив, содержащий номера строк и номера элементов повторяющихся при задании правил применямости 
					  
	CUIntArray NumItemWithEff;//массив номеров элементов, строк, и значениq применяемости
							  //сформирован следующим образом
							  //1-ый элемент - номер начальной ячейки  для отображения применяемости
							  //2-ой элемент - номер последней ячейки  для отображения применяемости
							  //3-ий элемент - экземпляр объекта данной применемости (приведенный к целому
							  //4-ый элемент - номер строки в таблице применяемости */
	CPtrArray Pext2;//массив экземпляров Product Definition Effectivity
	CPtrArray Pext0;//массив экземпляров ACU
	CPoint point;
	const MSG* msg;
	HWND m_prHwnd;//хэндлер окна таблицы продукта
	HWND m_efHwnd;//хэндлер окна таблицы применяемости					   
	CPoint mouseclick;//координаты клика мыши
	CaplInstance *m_pdf;

	CaplAPI *m_api;

	CaplEntity *m_rel;//объект ACU
	bool isDraw;//удалениe колонок списка применяемости 
	bool isSize;//наличuе отрисованного списка применяемости
	void OnChange();
	void OnAdd();
	void OnDelete();
	int i,j,k;
	int m_numRow; //номер выделенной строки списка
	int m_counterCom;//в случае равенства нулю - список изделий рисуем
	CButton& cancel() 
      { return *(CButton*) GetDlgItem(IDCANCEL); }

// Dialog Data
	//{{AFX_DATA(CManagerEffectivityDlg)
	enum { IDD = IDD_MANAGEREFFECTIVITY_DIALOG };
	CButton	m_change_btn;
	CButton	m_del_btn;
	CButton	m_add_btn;
	ListEff	m_sample;
	CSpinButtonCtrl	m_spinWidth;
	ListEff	m_in_prd_ctrl;
	ListEff	m_eff_ctrl;
	CSpinButtonCtrl	m_spinTab;
	CEdit	m_version;
	CEdit	m_name;
	CEdit	m_ident;
	CTabCtrl	m_tab;
	int		m_width;
	CaplButton	m_cancel_btn;
	CaplButton	m_ok_btn;
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CManagerEffectivityDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);	// DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
//public:
	CaplSplitterBar m_wndVSplitterBar;//разделитель между списками

	// Generated message map functions
	//{{AFX_MSG(CManagerEffectivityDlg)
	virtual BOOL OnInitDialog();
	afx_msg void OnPaint();
	afx_msg void OnSelchangeTab(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnRclickEffect(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnCustomdrawList ( NMHDR* pNMHDR, LRESULT* pResult );
	afx_msg void OnClickEffect(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnClickProduct(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnRclickProduct(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDeltaposSpintab(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDeltaposSpinwidth(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnSize(UINT nType, int cx, int cy);
	afx_msg void OnSetfocusEffect(NMHDR* pNMHDR, LRESULT* pResult);
	afx_msg void OnDblclkEffect(NMHDR* pNMHDR, LRESULT* pResult);
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.

#endif // !defined(AFX_MANAGEREFFECTIVITYDLG_H__96680F56_B1FD_4BCA_BAEC_D8CF175645FF__INCLUDED_)
