typedef struct _LVCOLUMN {
UINT mask;
int fmt;
int cx;
LPTSTR pszText;
int cchTextMax;
int iSubItem;
#if (_WIN32_IE >= 0x0300)
int iImage;
int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN;
таблица для отображения статистики
как сделать таблицу для отображения статистики чего либо. Например в крайне левой вертикальной колонке фамилии, в последующих произвольные числовые данные (самая верхняя горизонтальная полоса - названия колонок)?? Может уже что-то готовое есть?:rolleyes: Пишу на с++
ListView создаётся функцией CreateWindow, указав в качестве класса окна WC_LISTVIEW.Этот класс окна регистрируется, когда загружается динамически компонуемая библиотека (DLL) общих элементов управления (common controls). Чтобы гарантировать, что эта DLL загружена используется функция InitCommonControls(). Чтобы задать табличную форму отображения данных, окно должно быть создано со стилем LVS_REPORT. Если требуется расчертить в таблице линии, то используется макрос ListView_SetExtendedListViewStyle. Это насчёт создания таблицы. Теперь заполнение ячеек таблицы. Заполняем структуру LVCOLUMN:
Код:
Описание полей:
mask- это поле определяет, какие поля в структуре определены;
cx- задаёт ширину колонки таблицы;
pszText- задаёт текст колонки.
Для добавления колонки в ListViewer используется макрос ListView_InsertColumn:
Код:
int ListView_InsertColumn(
HWND hwnd,
int iCol,
const LV_COLUMN FAR *pcol
);
HWND hwnd,
int iCol,
const LV_COLUMN FAR *pcol
);
где hwnd- дескриптор ListView
iCol- порядковый номер столбца
pcol- указатель на структуру данных LVCOLUMN
Структура LV_ITEM используется для заполнения ячеек татлицы.
Код:
typedef struct _LVITEM {
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
int iGroupId;
UINT cColumns; // tile view columns
PUINT puColumns;
#endif
} LVITEM, FAR *LPLVITEM;
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
int iGroupId;
UINT cColumns; // tile view columns
PUINT puColumns;
#endif
} LVITEM, FAR *LPLVITEM;
Поля структуры:
mask- набор битовых флагов, состав которых определяет, какие поля в структуре заполнены;
iItem- фактически обозначает порядковый номер строки "таблицы";
iSubItem- порядковый номер столбца "таблицы";
pszText- текст.
Добавление новой "строки" в "таблицу" осуществляется макросом ListView_InsertItem:
Код:
int ListView_InsertItem(
HWND hwnd,
const LPLVITEM pitem
);
HWND hwnd,
const LPLVITEM pitem
);
Макрос ListView_SetitemText позволяет изменить текст ячейки в таблице.
Единственный недостаток такой "таблицы" состоит в невозможности её "динамического" редактирования, но для отображения табличных данных сгодится.
Цитата:
Единственный недостаток такой "таблицы" состоит в невозможности её "динамического" редактирования, но для отображения табличных данных сгодится.
Как это низзя? Задаём флаг стиля LVS_EDITLABELS при создании или посредством SetWindowLong() и реагируем на LVN_ENDLABELEDIT - всего-то делов.
Цитата:
Как это низзя? Задаём флаг стиля LVS_EDITLABELS при создании или посредством SetWindowLong() и реагируем на LVN_ENDLABELEDIT - всего-то делов.
В своё время я тоже задавался вопросом "динамического" (посредствои ввода с клавиатуры) редактирования табличных данных элемента управления ListViewer'a. Действительно, при создании такой "таблицы" со стилем LVS_EDITLABELS можно редактировать, но... но только первый "столбец"...
Цитата: SergPas
Для этой цели в WinAPI предусмотрен один элемент управления ListView, который в свою очередь состоит из 2-х элементов- "таблички" и заголовка. Последний может существовать как отдельный элемент.
ListView создаётся функцией CreateWindow, указав в качестве класса окна WC_LISTVIEW.Этот класс окна регистрируется, когда загружается динамически компонуемая библиотека (DLL) общих элементов управления (common controls). Чтобы гарантировать, что эта DLL загружена используется функция InitCommonControls(). Чтобы задать табличную форму отображения данных, окно должно быть создано со стилем LVS_REPORT. Если требуется расчертить в таблице линии, то используется макрос ListView_SetExtendedListViewStyle. Это насчёт создания таблицы. Теперь заполнение ячеек таблицы. Заполняем структуру LVCOLUMN:
Описание полей:
mask- это поле определяет, какие поля в структуре определены;
cx- задаёт ширину колонки таблицы;
pszText- задаёт текст колонки.
Для добавления колонки в ListViewer используется макрос ListView_InsertColumn:
где hwnd- дескриптор ListView
iCol- порядковый номер столбца
pcol- указатель на структуру данных LVCOLUMN
Структура LV_ITEM используется для заполнения ячеек татлицы.
Поля структуры:
mask- набор битовых флагов, состав которых определяет, какие поля в структуре заполнены;
iItem- фактически обозначает порядковый номер строки "таблицы";
iSubItem- порядковый номер столбца "таблицы";
pszText- текст.
Добавление новой "строки" в "таблицу" осуществляется макросом ListView_InsertItem:
Макрос ListView_SetitemText позволяет изменить текст ячейки в таблице.
Единственный недостаток такой "таблицы" состоит в невозможности её "динамического" редактирования, но для отображения табличных данных сгодится.
ListView создаётся функцией CreateWindow, указав в качестве класса окна WC_LISTVIEW.Этот класс окна регистрируется, когда загружается динамически компонуемая библиотека (DLL) общих элементов управления (common controls). Чтобы гарантировать, что эта DLL загружена используется функция InitCommonControls(). Чтобы задать табличную форму отображения данных, окно должно быть создано со стилем LVS_REPORT. Если требуется расчертить в таблице линии, то используется макрос ListView_SetExtendedListViewStyle. Это насчёт создания таблицы. Теперь заполнение ячеек таблицы. Заполняем структуру LVCOLUMN:
Код:
typedef struct _LVCOLUMN {
UINT mask;
int fmt;
int cx;
LPTSTR pszText;
int cchTextMax;
int iSubItem;
#if (_WIN32_IE >= 0x0300)
int iImage;
int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN;
UINT mask;
int fmt;
int cx;
LPTSTR pszText;
int cchTextMax;
int iSubItem;
#if (_WIN32_IE >= 0x0300)
int iImage;
int iOrder;
#endif
} LVCOLUMN, FAR *LPLVCOLUMN;
Описание полей:
mask- это поле определяет, какие поля в структуре определены;
cx- задаёт ширину колонки таблицы;
pszText- задаёт текст колонки.
Для добавления колонки в ListViewer используется макрос ListView_InsertColumn:
Код:
int ListView_InsertColumn(
HWND hwnd,
int iCol,
const LV_COLUMN FAR *pcol
);
HWND hwnd,
int iCol,
const LV_COLUMN FAR *pcol
);
где hwnd- дескриптор ListView
iCol- порядковый номер столбца
pcol- указатель на структуру данных LVCOLUMN
Структура LV_ITEM используется для заполнения ячеек татлицы.
Код:
typedef struct _LVITEM {
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
int iGroupId;
UINT cColumns; // tile view columns
PUINT puColumns;
#endif
} LVITEM, FAR *LPLVITEM;
UINT mask;
int iItem;
int iSubItem;
UINT state;
UINT stateMask;
LPTSTR pszText;
int cchTextMax;
int iImage;
LPARAM lParam;
#if (_WIN32_IE >= 0x0300)
int iIndent;
#endif
#if (_WIN32_IE >= 0x560)
int iGroupId;
UINT cColumns; // tile view columns
PUINT puColumns;
#endif
} LVITEM, FAR *LPLVITEM;
Поля структуры:
mask- набор битовых флагов, состав которых определяет, какие поля в структуре заполнены;
iItem- фактически обозначает порядковый номер строки "таблицы";
iSubItem- порядковый номер столбца "таблицы";
pszText- текст.
Добавление новой "строки" в "таблицу" осуществляется макросом ListView_InsertItem:
Код:
int ListView_InsertItem(
HWND hwnd,
const LPLVITEM pitem
);
HWND hwnd,
const LPLVITEM pitem
);
Макрос ListView_SetitemText позволяет изменить текст ячейки в таблице.
Единственный недостаток такой "таблицы" состоит в невозможности её "динамического" редактирования, но для отображения табличных данных сгодится.
Можно пл. какой-нибудь исходник (с++), где данная таблица используется:) А то что то уменя не пашет
MSDN-то надо смотреть. Хоть иногда...
Да ё-моё...