// MessageRecord.cpp // // (c)1998-2025 Codejock Software, All Rights Reserved. // // THIS SOURCE FILE IS THE PROPERTY OF CODEJOCK SOFTWARE AND IS NOT TO BE // RE-DISTRIBUTED BY ANY MEANS WHATSOEVER WITHOUT THE EXPRESSED WRITTEN // CONSENT OF CODEJOCK SOFTWARE. // // THIS SOURCE CODE CAN ONLY BE USED UNDER THE TERMS AND CONDITIONS OUTLINED // IN THE XTREME TOOLKIT PRO LICENSE AGREEMENT. CODEJOCK SOFTWARE GRANTS TO // YOU (ONE SOFTWARE DEVELOPER) THE LIMITED RIGHT TO USE THIS SOFTWARE ON A // SINGLE COMPUTER. // // CONTACT INFORMATION: // support@codejock.com // http://www.codejock.com // ///////////////////////////////////////////////////////////////////////////// #include "stdafx.h" #include "CustomDrawGrid.h" #include "MessageRecord.h" #ifdef _DEBUG # undef THIS_FILE static char THIS_FILE[] = __FILE__; # define new DEBUG_NEW #endif IMPLEMENT_SERIAL(CMessageRecord, CXTPGridRecord, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT) IMPLEMENT_SERIAL(CMessageRecordItemCheckGroup, CXTPGridRecordItem, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT) IMPLEMENT_SERIAL(CMessageRecordItemRadioGroup, CXTPGridRecordItem, VERSIONABLE_SCHEMA | _XTP_SCHEMA_CURRENT) ////////////////////////////////////////////////////////////////////////// // CMessageRecordItemCheckGroup CMessageRecordItemCheckGroup::CMessageRecordItemCheckGroup() : m_unCheckboxes(0) , m_ulValue(0) { } CMessageRecordItemCheckGroup::CMessageRecordItemCheckGroup(unsigned int unCheckboxes, ULONG ulValue) : m_unCheckboxes(unCheckboxes) , m_ulValue(ulValue) { } int CMessageRecordItemCheckGroup::Compare(CXTPGridColumn* /*pColumn*/, CXTPGridRecordItem* pItem) { return int(m_ulValue) - int(((CMessageRecordItemCheckGroup*)pItem)->m_ulValue); } CString CMessageRecordItemCheckGroup::GetGroupCaption(CXTPGridColumn* /*pColumn*/) { CString strGroupCaption; strGroupCaption.Format(_T("%d"), m_ulValue); return strGroupCaption; } int CMessageRecordItemCheckGroup::CompareGroupCaption(CXTPGridColumn* pColumn, CXTPGridRecordItem* pItem) { return GetGroupCaption(pColumn).Compare(pItem->GetGroupCaption(pColumn)); } void CMessageRecordItemCheckGroup::DoPropExchange(CXTPPropExchange* pPX) { CXTPGridRecordItem::DoPropExchange(pPX); PX_ULong(pPX, _T("Attr1"), m_ulValue); } ////////////////////////////////////////////////////////////////////////// // CMessageRecordItemRadioGroup CMessageRecordItemRadioGroup::CMessageRecordItemRadioGroup() : m_unRadioButtons(0) , m_ulValue(0) { } CMessageRecordItemRadioGroup::CMessageRecordItemRadioGroup(unsigned int unRadioButtons, ULONG ulValue) : m_unRadioButtons(unRadioButtons) , m_ulValue(ulValue) { } int CMessageRecordItemRadioGroup::Compare(CXTPGridColumn* /*pColumn*/, CXTPGridRecordItem* pItem) { return int(m_ulValue) - int(((CMessageRecordItemRadioGroup*)pItem)->m_ulValue); } CString CMessageRecordItemRadioGroup::GetGroupCaption(CXTPGridColumn* /*pColumn*/) { CString strGroupCaption; strGroupCaption.Format(_T("%d"), m_ulValue); return strGroupCaption; } int CMessageRecordItemRadioGroup::CompareGroupCaption(CXTPGridColumn* pColumn, CXTPGridRecordItem* pItem) { return GetGroupCaption(pColumn).Compare(pItem->GetGroupCaption(pColumn)); } void CMessageRecordItemRadioGroup::DoPropExchange(CXTPPropExchange* pPX) { CXTPGridRecordItem::DoPropExchange(pPX); PX_ULong(pPX, _T("Attr2"), m_ulValue); } ////////////////////////////////////////////////////////////////////// // CMessageRecord class ////////////////////////////////////////////////////////////////////// // Construction/Destruction ////////////////////////////////////////////////////////////////////// CMessageRecord::CMessageRecord() { m_pItemAttr1 = NULL; m_pItemAttr2 = NULL; CreateItems(); } CMessageRecord::CMessageRecord(CString strName, unsigned int unCheckboxes, unsigned int unCheckValue, unsigned int unRadioButtons, unsigned int unRadioValue, CString strProgressText, COLORREF clrProgress, int nProgressWidth, int nProgressLower, int nProgressUpper, int nProgressStep, int nProgressPos) { AddItem(new CXTPGridRecordItemText(strName)); m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem( new CMessageRecordItemCheckGroup(unCheckboxes, unCheckValue)); m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem( new CMessageRecordItemRadioGroup(unRadioButtons, unRadioValue)); m_pItemAttr3 = (CXTPGridRecordItemProgress*)AddItem( new CXTPGridRecordItemProgress(strProgressText, clrProgress, nProgressWidth, nProgressLower, nProgressUpper, nProgressStep, nProgressPos)); // SetPreviewItem(new CXTPGridRecordItemPreview(strPreview)); } void CMessageRecord::CreateItems() { // Initialize record items with empty values // 0 AddItem(new CXTPGridRecordItemText(_T(""))); // 1 *** m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem(new CMessageRecordItemCheckGroup(1, 0)); // 2 *** m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem(new CMessageRecordItemRadioGroup(1, 0)); // 3 *** m_pItemAttr3 = (CXTPGridRecordItemProgress*)AddItem( new CXTPGridRecordItemProgress(_T("Test string"), RGB(0, 0, 150), 15, 5, 105, 15, 25)); SetPreviewItem(new CXTPGridRecordItemPreview(_T(""))); } CMessageRecord::~CMessageRecord() { } void CMessageRecord::GetItemMetrics(XTP_GRIDRECORDITEM_DRAWARGS* pDrawArgs, XTP_GRIDRECORDITEM_METRICS* pItemMetrics) { CXTPGridRecord::GetItemMetrics(pDrawArgs, pItemMetrics); } void CMessageRecord::DoPropExchange(CXTPPropExchange* pPX) { CXTPGridRecord::DoPropExchange(pPX); if (pPX->IsLoading()) { // 1 - m_pItemAttr1 = (CMessageRecordItemCheckGroup*)AddItem(new // CMessageRecordItemCheckGroup(1, 0)); ASSERT_KINDOF(CMessageRecordItemCheckGroup, GetItem(1)); m_pItemAttr1 = DYNAMIC_DOWNCAST(CMessageRecordItemCheckGroup, GetItem(1)); _ASSERTE(m_pItemAttr1); // 2 - m_pItemAttr2 = (CMessageRecordItemRadioGroup*)AddItem(new // CMessageRecordItemRadioGroup(1, 0)); ASSERT_KINDOF(CMessageRecordItemRadioGroup, GetItem(2)); m_pItemAttr2 = DYNAMIC_DOWNCAST(CMessageRecordItemRadioGroup, GetItem(2)); _ASSERTE(m_pItemAttr2); } }