Clase CMFCListCtrl
La clase CMFCListCtrl
prolonga la funcionalidad de la clase CListCtrl
al proporcionar la funcionalidad del control avanzado de encabezado de la clase CMFCHeaderCtrl
.
Sintaxis
class CMFCListCtrl : public CListCtrl
Miembros
Métodos públicos
Nombre | Descripción |
---|---|
CMFCListCtrl::EnableMarkSortedColumn |
Permite marcar una columna ordenada con un color de fondo diferente. |
CMFCListCtrl::EnableMultipleSort |
Habilita el modo de ordenación múltiple. |
CMFCListCtrl::GetHeaderCtrl |
Devuelve una referencia al control de encabezado subrayado. |
CMFCListCtrl::IsMultipleSort |
Comprueba si el control de lista está en modo de ordenación múltiple. |
CMFCListCtrl::OnCompareItems |
Lo llama el marco cuando debe comparar dos elementos de control de lista. |
CMFCListCtrl::OnGetCellBkColor |
Lo llama el marco cuando debe determinar el color de fondo de una celda individual. |
CMFCListCtrl::OnGetCellFont |
Lo llama el marco cuando debe obtener la fuente de la celda que se va a dibujar. |
CMFCListCtrl::OnGetCellTextColor |
Lo llama el marco cuando debe determinar el color de texto de una celda individual. |
CMFCListCtrl::RemoveSortColumn |
Quita una columna de ordenación de la lista de columnas ordenadas. |
CMFCListCtrl::SetSortColumn |
Establece la columna ordenada actual y el criterio de ordenación. |
CMFCListCtrl::Sort |
Ordena el control de lista. |
Comentarios
CMFCListCtrl
ofrece dos mejoras en la clase CListCtrl
. En primer lugar, indica que la ordenación de columnas es una opción disponible al dibujar automáticamente una flecha de ordenación en el encabezado. En segundo lugar, admite la ordenación de datos en varias columnas al mismo tiempo.
Ejemplo
En el siguiente ejemplo se muestra cómo usar los distintos métodos en la clase CMFCListCtrl
. En el ejemplo, se muestra cómo crear un control de lista, insertar columnas, insertar elementos, establecer el texto de un elemento y establecer la fuente del control de lista. Este fragmento de código forma parte del ejemplo de demostración de Visual Studio.
CMFCListCtrl m_wndWatch;
// DWORD dwStyle
// CRect rectDummy
m_wndWatch.Create(dwStyle, rectDummy, this, ID_LIST_1);
m_wndWatch.SendMessage(LVM_SETEXTENDEDLISTVIEWSTYLE, 0, LVS_EX_FULLROWSELECT | LVS_EX_GRIDLINES);
m_wndWatch.InsertColumn(0, _T("Variable"), LVCFMT_LEFT, 100);
m_wndWatch.InsertColumn(1, _T("Value"), LVCFMT_LEFT, 100);
m_wndWatch.InsertItem(0, _T("m_nCount"));
m_wndWatch.SetItemText(0, 1, _T("100"));
m_wndWatch.SetFont(&m_Font);
Jerarquía de herencia
Requisitos
Encabezado: afxlistctrl.h
CMFCListCtrl::EnableMarkSortedColumn
Marca las columnas ordenadas con un color de fondo diferente.
void EnableMarkSortedColumn(
BOOL bMark = TRUE,
BOOL bRedraw = TRUE);
Parámetros
bMark
[entrada] Parámetro booleano que determina si se va a habilitar un color de fondo diferente.
bRedraw
[entrada] Parámetro booleano que determina si se va a volver a dibujar el control inmediatamente.
Comentarios
EnableMarkSortedColumn
usa el método CDrawingManager::PixelAlpha
para calcular el color que se va a usar para las columnas ordenadas. El color seleccionado se basa en el color de fondo normal.
CMFCListCtrl::EnableMultipleSort
Habilita la ordenación de las filas de datos en el control de lista por varias columnas.
void EnableMultipleSort(BOOL bEnable = TRUE);
Parámetros
bEnable
[entrada] Valor booleano que especifica si se va a habilitar el modo de ordenación de varias columnas.
Comentarios
Al habilitar la ordenación en función de varias columnas, las columnas tienen una jerarquía. Las filas de datos se ordenarán primero por la columna principal. A continuación, los valores equivalentes se ordenan por cada columna subsiguiente en función de la prioridad.
CMFCListCtrl::GetHeaderCtrl
Devuelve una referencia al control de encabezado.
virtual CMFCHeaderCtrl& GetHeaderCtrl();
Valor devuelto
Referencia al objeto subyacente CMFCHeaderCtrl
.
Comentarios
El control de encabezado de un control de lista es la ventana que contiene los títulos de las columnas. Normalmente, se coloca directamente encima de las columnas.
CMFCListCtrl::IsMultipleSort
Comprueba si el control de lista admite actualmente la ordenación en varias columnas.
BOOL IsMultipleSort() const;
Valor devuelto
TRUE
si el control de lista admite la ordenación múltiple; de lo contrario, es FALSE
.
Comentarios
Cuando una clase CMFCListCtrl
admite la ordenación múltiple, el usuario puede ordenar los datos del control de lista por varias columnas. Para habilitar la ordenación múltiple, llame a CMFCListCtrl::EnableMultipleSort
.
CMFCListCtrl::OnCompareItems
El marco llama a este método cuando compara dos elementos.
virtual int OnCompareItems(
LPARAM lParam1,
LPARAM lParam2,
int iColumn);
Parámetros
lParam1
[entrada] Primer elemento que se va a comparar.
lParam2
[entrada] Segundo elemento que se va a comparar.
iColumn
[entrada] Índice de la columna que este método va a ordenar.
Valor devuelto
Entero que indica la posición relativa de los dos elementos. Un valor negativo indica que el primer elemento debe preceder al segundo, un valor positivo indica que el primer elemento debe seguir el segundo y cero significa que los dos elementos son equivalentes.
Comentarios
La implementación predeterminada siempre devuelve 0. Invalide esta función para proporcionar su propio algoritmo de ordenación.
CMFCListCtrl::OnGetCellBkColor
El marco llama a este método cuando debe determinar el color de fondo de una celda individual.
virtual COLORREF OnGetCellBkColor(
int nRow,
int nColumn);
Parámetros
nRow
[entrada] Fila de la celda en cuestión.
nColumn
[entrada] Columna de la celda en cuestión.
Valor devuelto
Valor COLOREF
que especifica el color de fondo de la celda.
Comentarios
La implementación predeterminada de OnGetCellBkColor
no usa los parámetros de entrada proporcionados y, en su lugar, simplemente llama a GetBkColor
. Por lo tanto, de forma predeterminada, todo el control de lista tendrá el mismo color de fondo. Puede invalidar OnGetCellBkColor
en una clase derivada para marcar celdas individuales con un color de fondo independiente.
CMFCListCtrl::OnGetCellFont
El marco llama a este método cuando obtiene la fuente de una celda individual.
virtual HFONT OnGetCellFont(
int nRow,
int nColumn,
DWORD dwData = 0);
Parámetros
nRow
[entrada] Fila de la celda en cuestión.
nColumn
[entrada] Columna de la celda en cuestión.
dwData
[entrada] Datos definidos por el usuario. La implementación predeterminada no usa este parámetro.
Valor devuelto
Manipulador de la fuente que se usa para la celda actual.
Comentarios
De manera predeterminada, este método devuelve NULL
. Todas las celdas de un control de lista tienen la misma fuente. Invalide este método para proporcionar diferentes fuentes para celdas diferentes.
CMFCListCtrl::OnGetCellTextColor
El marco llama a este método cuando debe determinar el color de texto de una celda individual.
virtual COLORREF OnGetCellTextColor(
int nRow,
int nColumn);
Parámetros
nRow
[entrada] Fila de la celda en cuestión.
nColumn
[entrada] Columna de la celda en cuestión.
Valor devuelto
Valor de COLOREF
que especifica el color del texto de la celda.
Comentarios
De forma predeterminada, este método llama a GetTextColor
independientemente de los parámetros de entrada. Todo el control de lista tendrá el mismo color de texto. Puede invalidar OnGetCellTextColor
en una clase derivada para marcar celdas individuales con un color de texto independiente.
CMFCListCtrl::RemoveSortColumn
Quita una columna de ordenación de la lista de columnas ordenadas.
void RemoveSortColumn(int iColumn);
Parámetros
iColumn
[entrada] Columna que se va a quitar.
Comentarios
Este método quita una columna de ordenación del control de encabezado. Llama a CMFCHeaderCtrl::RemoveSortColumn
.
CMFCListCtrl::SetSortColumn
Establece la columna ordenada actual y el criterio de ordenación.
void SetSortColumn(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
Parámetros
iColumn
[entrada] Columna que se va a ordenar.
bAscending
[entrada] Valor booleano que especifica el criterio de ordenación.
bAdd
[entrada] Valor booleano que especifica si el método agrega la columna indicada por iColumn
a la lista de columnas de ordenación.
Comentarios
Este método pasa los parámetros de entrada al control de encabezado mediante el método CMFCHeaderCtrl::SetSortColumn
.
CMFCListCtrl::Sort
Ordena el control de lista.
virtual void Sort(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
Parámetros
iColumn
[entrada] Columna que se va a ordenar.
bAscending
[entrada] Valor booleano que especifica el criterio de ordenación.
bAdd
[entrada] Valor booleano que especifica si este método agrega la columna indicada por iColumn
a la lista de columnas de ordenación.