Возможность перетаскивания элементов в List Control
Автор: Jean Claude Dauphin.
Возможности
Это расширенный элемент управления позволяет
перетаскивать элементы между списками при
помощи OLE. Программист может разрешать/запрещать
локальное перетаскивание элементов (т.е. в одном
и том же списке, автоматический скролинг и
удаление перенесённых элементов из исходного
списка.
Использование элемента
- Инициализируем библиотеку OLE в функции InitInstance
Вашего приложения:
BOOL CDdDemoApp::InitInstance()
{
AfxEnableControlContainer();
#ifdef _AFXDLL
Enable3dControls();
#else
Enable3dControlsStatic();
#endif
if (!AfxOleInit())
return FALSE;
- Вставляем #include "DDListCtrl.h" в файл описывающий
главный диалог приложения и содержащий Списки.
- В функции OnInitDialog диалога, инициализируем и
создаём собственную инициалицию списков по
следующему шаблону:
BOOL CDdDemoDlg::OnInitDialog()
{
CDialog::OnInitDialog();
//.................................
>
m_listVars.SubclassDlgItem(IDC_LIST_VAR, this);
m_listRows.SubclassDlgItem(IDC_LIST_ROWS, this);
m_listCols.SubclassDlgItem(IDC_LIST_COLS, this);
m_listData.SubclassDlgItem(IDC_LIST_DATA, this);
m_listPages.SubclassDlgItem(IDC_LIST_PAGES, this);
CString s(TCHAR('M'),29);
int len = m_listVars.GetStringWidth(s)+15;
LV_COLUMN lvC;
lvC.mask = LVCF_FMT | LVCF_WIDTH;
lvC.fmt = LVCFMT_LEFT;
lvC.cx = len;
if (m_listVars.InsertColumn(0,&lvC) == -1)
return FALSE;
m_listVars.DeleteAllItems();
m_listVars.SetLocalDD(FALSE);
m_listVars.SetScrolling(FALSE);
if (m_listRows.InsertColumn(0,&lvC) == -1)
return FALSE;
m_listRows.DeleteAllItems();
if (m_listCols.InsertColumn(0,&lvC) == -1)
return FALSE;
m_listCols.DeleteAllItems();
if (m_listData.InsertColumn(0,&lvC) == -1)
return FALSE;
m_listData.DeleteAllItems();
if (m_listPages.InsertColumn(0,&lvC) == -1)
return FALSE;
m_listPages.DeleteAllItems();
CWordArray aVars;
int size = m_pSelectInfo->m_asNames.GetSize();
aVars.SetSize(size);
for (int i=0; i<size; i++)
aVars[i] = i;
m_pData->FillListCtrl(m_listVars, aVars);
m_pData->FillListCtrl(m_listRows, m_pSelectInfo->m_aRowsVar);
m_pData->FillListCtrl(m_listCols, m_pSelectInfo->m_aColsVar);
m_pData->FillListCtrl(m_listData, m_pSelectInfo->m_aDataVar);
m_pData->FillListCtrl(m_listPages, m_pSelectInfo->m_aPagesVar);
m_listVars.Initialize();
m_listRows.Initialize();
m_listCols.Initialize();
m_listData.Initialize();
m_listPages.Initialize();
return TRUE;
}
Downloads
Скачать исходник - 9 Kb
Скачать демонстрашку - 32 Kb
|