From 9020bfb6f86ff853d5d5b3cee882132a244232da Mon Sep 17 00:00:00 2001
From: KEJ <kimeungju@diteam.co.kr>
Date: 금, 24 11월 2023 15:33:29 +0900
Subject: [PATCH] Merge branch 'feature/#4528_CF_AOI_Review_Motor_Offset_기능_추가' into develop

---
 Internal_Library/CHCommonControls/GridCellBase.cpp |  110 ++++++++++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 100 insertions(+), 10 deletions(-)

diff --git a/Internal_Library/CHCommonControls/GridCellBase.cpp b/Internal_Library/CHCommonControls/GridCellBase.cpp
index c33b250..4bc7925 100644
--- a/Internal_Library/CHCommonControls/GridCellBase.cpp
+++ b/Internal_Library/CHCommonControls/GridCellBase.cpp
@@ -68,13 +68,19 @@
 
 /////////////////////////////////////////////////////////////////////////////
 // GridCellBase Operations
-
 void CGridCellBase::Reset()
 {
+	m_Hide=false;
     m_nState  = 0;
+	m_MergeRange.Set();
+	m_IsMergeWithOthers=false;
+	m_MergeCellID.row=-1;
+	m_MergeCellID.col=-1;
+
+
 }
 
-void CGridCellBase::operator=(const CGridCellBase& cell)
+void CGridCellBase::operator=( CGridCellBase& cell)
 {
 	if (this == &cell) return;
 
@@ -89,6 +95,11 @@
     SetBackClr(cell.GetBackClr());
     SetFont(cell.IsDefaultFont()? NULL : cell.GetFont());
     SetMargin(cell.GetMargin());
+//Used for merge cells
+//by Huang Wei
+	SetMergeCellID(cell.GetMergeCellID());
+	SetMergeRange(cell.GetMergeRange());
+	Show(cell.IsShow());
 }
 
 /////////////////////////////////////////////////////////////////////////////
@@ -114,6 +125,14 @@
 {
     // Note - all through this function we totally brutalise 'rect'. Do not
     // depend on it's value being that which was passed in.
+
+	//Used for merge cells
+	//by Huang Wei
+	if(	m_Hide && !IsMerged())
+	{
+		return TRUE;
+	}
+
 
     CGridCtrl* pGrid = GetGrid();
     ASSERT(pGrid);
@@ -206,7 +225,7 @@
             rect.bottom--;
         }
 
-		//rect.DeflateRect(0,1,1,1);  - Removed by Yogurt
+		rect.DeflateRect(0,1,1,1); 
     }
     else if ((GetState() & GVIS_SELECTED))
     {
@@ -277,10 +296,7 @@
             pDC->SelectObject(pFont);
     }
 
-    //rect.DeflateRect(GetMargin(), 0); - changed by Yogurt
-    rect.DeflateRect(GetMargin(), GetMargin());    
-    rect.right++;    
-    rect.bottom++;
+    rect.DeflateRect(GetMargin(), 0);
 
     if (pGrid->GetImageList() && GetImage() >= 0)
     {
@@ -336,8 +352,7 @@
         BOOL bVertical = (GetFont()->lfEscapement == 900);
 
         // Only draw if it'll fit!
-        //if (size.cx + rect.left < rect.right + (int)(2*GetMargin())) - changed / Yogurt
-        if (size.cx + rect.left < rect.right)
+        if (size.cx + rect.left < rect.right + (int)(2*GetMargin()))
         {
             int nTriangleBase = rect.bottom - nOffset - size.cy;    // Triangle bottom right
             //int nTriangleBase = (rect.top + rect.bottom - size.cy)/2; // Triangle middle right
@@ -610,6 +625,13 @@
 // printed correctly.
 BOOL CGridCellBase::PrintCell(CDC* pDC, int /*nRow*/, int /*nCol*/, CRect rect)
 {
+	//Used for merge cells
+	//by Huang Wei
+	if(	m_Hide && !IsMerged())
+	{
+		return TRUE;
+	}
+
 #if defined(_WIN32_WCE_NO_PRINTING) || defined(GRIDCONTROL_NO_PRINTING)
     return FALSE;
 #else
@@ -627,6 +649,11 @@
     int nSavedDC = pDC->SaveDC();
 
     pDC->SetBkMode(TRANSPARENT);
+	//Used for merge cells
+	//by Huang Wei
+	rect.InflateRect(1,1);
+	pDC->Rectangle(rect);
+	rect.DeflateRect(1,1);
 
     if (pGrid->GetShadedPrintOut())
     {
@@ -770,4 +797,67 @@
         return pGrid->SendMessageToParent(nRow, nCol, nMessage);
     else
         return 0;
-}
\ No newline at end of file
+}
+//Used for merge cells
+//by Huang Wei
+void CGridCellBase::Show(bool IsShow)
+{
+	m_Hide=!IsShow;
+}
+//Used for merge cells
+//by Huang Wei
+void CGridCellBase::SetMergeRange(CCellRange range)
+{
+	m_MergeRange=range;
+}
+//Used for merge cells
+//by Huang Wei
+CCellRange CGridCellBase::GetMergeRange()
+{
+	return m_MergeRange;
+}
+//Used for merge cells
+//by Huang Wei
+bool CGridCellBase::IsMerged()
+{
+	return m_MergeRange.Count()>1;
+}
+//Used for merge cells
+//by Huang Wei
+void CGridCellBase::SetMergeCellID(CCellID cell)
+{
+	m_MergeCellID=cell;
+	if(cell.row!=-1)
+		m_IsMergeWithOthers=true;
+	else
+		m_IsMergeWithOthers=false;
+
+}
+//Used for merge cells
+//by Huang Wei
+CCellID CGridCellBase::GetMergeCellID()
+{
+	return m_MergeCellID;
+}
+//Used for merge cells
+//by Huang Wei
+bool CGridCellBase::IsMergeWithOthers()
+{
+	return m_IsMergeWithOthers;
+}
+//Used for merge cells
+//by Huang Wei
+bool CGridCellBase::IsShow()
+{
+	return !m_Hide;
+}
+//Used for merge cells
+//by Huang Wei
+void CGridCellBase::UnMerge()
+{
+	m_Hide=false;
+	m_MergeRange.Set();
+	m_IsMergeWithOthers=false;
+	m_MergeCellID.row=-1;
+	m_MergeCellID.col=-1;
+}

--
Gitblit v1.9.3