1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
| BOOL CGridListCtrlExDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// Add "About..." menu item to system menu.
// IDM_ABOUTBOX must be in the system command range.
ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
ASSERT(IDM_ABOUTBOX < 0xF000);
CMenu* pSysMenu = GetSystemMenu(FALSE);
if (pSysMenu != NULL)
{
CString strAboutMenu;
strAboutMenu.LoadString(IDS_ABOUTBOX);
if (!strAboutMenu.IsEmpty())
{
pSysMenu->AppendMenu(MF_SEPARATOR);
pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
}
}
// Set the icon for this dialog. The framework does this automatically
// when the application's main window is not a dialog
SetIcon(m_hIcon, TRUE); // Set big icon
SetIcon(m_hIcon, FALSE); // Set small icon
// TODO: Add extra initialization here
// Create and attach image list
m_ImageList.Create(16, 16, ILC_COLOR16 | ILC_MASK, 1, 0);
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGDEN));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGGERM));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGFRAN));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGGREEC));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGSWED));
m_ImageList.Add(AfxGetApp()->LoadIcon(IDI_FLGSPAIN));
int nStateImageIdx = CGridColumnTraitDateTime::AppendStateImages(m_ListCtrl, m_ImageList); // Add checkboxes
m_ListCtrl.SetImageList(&m_ImageList, LVSIL_SMALL);
// Give better margin to editors
m_ListCtrl.SetCellMargin(1.2);
CGridRowTraitXP* pRowTrait = new CGridRowTraitXP;
m_ListCtrl.SetDefaultRowTrait(pRowTrait);
// Create Columns
m_ListCtrl.InsertHiddenLabelColumn(); // Requires one never uses column 0
for(int col = 0; col < m_DataModel.GetColCount() ; ++col)
{
const CString& title = m_DataModel.GetColTitle(col);
CGridColumnTrait* pTrait = NULL;
if (col==0) // Country
{
CGridColumnTraitCombo* pComboTrait = new CGridColumnTraitCombo;
const vector<CString>& countries = m_DataModel.GetCountries();
for(size_t i=0; i < countries.size() ; ++i)
pComboTrait->AddItem((DWORD_PTR)i, countries[i]);
pTrait = pComboTrait;
}
if (col==1) // City
{
pTrait = new CGridColumnTraitEdit;
}
if (col==2) // Year won
{
CGridColumnTraitDateTime* pDateTimeTrait = new CGridColumnTraitDateTime;
pDateTimeTrait->AddImageIndex(nStateImageIdx, _T(""), false); // Unchecked (and not editable)
pDateTimeTrait->AddImageIndex(nStateImageIdx+1, COleDateTime(1970,1,1,0,0,0).Format(), true); // Checked (and editable)
pDateTimeTrait->SetToggleSelection(true);
pTrait = pDateTimeTrait;
}
if (col==3) // Year won
{
CGridColumnTraitHyperLink* pHyperLinkTrait = new CGridColumnTraitHyperLink;
pHyperLinkTrait->SetShellFilePrefix(_T("http://en.wikipedia.org/wiki/UEFA_Euro_"));
pTrait = pHyperLinkTrait;
}
// Deuxieme partie ajouté.
if (col==4)
{
pTrait = new CGridColumnTraitEdit;
}
m_ListCtrl.InsertColumnTrait(col+1, title, LVCFMT_LEFT, 100, col, pTrait);
}
// Insert data into list-control by copying from datamodel
int nItem = 0;
for(size_t rowId = 0; rowId < m_DataModel.GetRowIds() ; ++rowId)
{
nItem = m_ListCtrl.InsertItem(++nItem, m_DataModel.GetCellText(rowId,0));
m_ListCtrl.SetItemData(nItem, rowId);
for(int col = 0; col < m_DataModel.GetColCount() ; ++col)
{
int nCellCol = col+1; // +1 because of hidden column
const CString& strCellText = m_DataModel.GetCellText(rowId, col);
m_ListCtrl.SetItemText(nItem, nCellCol, strCellText);
if (nCellCol==3)
{
if (strCellText==_T(""))
m_ListCtrl.SetCellImage(nItem, nCellCol, nStateImageIdx); // unchecked
else
m_ListCtrl.SetCellImage(nItem, nCellCol, nStateImageIdx+1); // checked
}
}
m_ListCtrl.SetCellImage(nItem, 1, nItem); // Assign flag-images
}
CViewConfigSectionWinApp* pColumnProfile = new CViewConfigSectionWinApp(_T("Sample List"));
pColumnProfile->AddProfile(_T("Default"));
pColumnProfile->AddProfile(_T("Special"));
m_ListCtrl.SetupColumnConfig(pColumnProfile);
return TRUE; // return TRUE unless you set the focus to a control
} |
Partager