Classe CMFCListCtrl
La CMFCListCtrl
classe estende la funzionalità della CListCtrl
classe Class supportando la funzionalità avanzata del controllo intestazione della CMFCHeaderCtrl
classe .
Sintassi
class CMFCListCtrl : public CListCtrl
Membri
Metodi pubblici
Nome | Descrizione |
---|---|
CMFCListCtrl::EnableMarkSortedColumn |
Consente di contrassegnare una colonna ordinata con un colore di sfondo diverso. |
CMFCListCtrl::EnableMultipleSort |
Abilita più modalità di ordinamento. |
CMFCListCtrl::GetHeaderCtrl |
Restituisce un riferimento al controllo intestazione sottolineato. |
CMFCListCtrl::IsMultipleSort |
Controlla se il controllo elenco è in modalità di ordinamento multipla. |
CMFCListCtrl::OnCompareItems |
Chiamato dal framework quando deve confrontare due elementi di controllo elenco. |
CMFCListCtrl::OnGetCellBkColor |
Chiamato dal framework quando deve determinare il colore di sfondo di una singola cella. |
CMFCListCtrl::OnGetCellFont |
Chiamato dal framework quando deve ottenere il tipo di carattere per la cella da disegnare. |
CMFCListCtrl::OnGetCellTextColor |
Chiamato dal framework quando deve determinare il colore del testo di una singola cella. |
CMFCListCtrl::RemoveSortColumn |
Rimuove una colonna di ordinamento dall'elenco di colonne ordinate. |
CMFCListCtrl::SetSortColumn |
Imposta la colonna ordinata corrente e l'ordinamento. |
CMFCListCtrl::Sort |
Ordina il controllo elenco. |
Osservazioni:
CMFCListCtrl
offre due miglioramenti alla CListCtrl
classe Class . In primo luogo, indica che l'ordinamento delle colonne è un'opzione disponibile disegnando automaticamente una freccia di ordinamento sull'intestazione. In secondo luogo, supporta l'ordinamento dei dati su più colonne contemporaneamente.
Esempio
L'esempio seguente illustra come usare i vari metodi nella classe CMFCListCtrl
. Nell'esempio viene illustrato come creare un controllo elenco, inserire colonne, inserire elementi, impostare il testo di un elemento e impostare il tipo di carattere del controllo elenco. Questo frammento di codice fa parte dell'esempio demo di 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);
Gerarchia di ereditarietà
Requisiti
Intestazione: afxlistctrl.h
CMFCListCtrl::EnableMarkSortedColumn
Contrassegna le colonne ordinate con un colore di sfondo diverso.
void EnableMarkSortedColumn(
BOOL bMark = TRUE,
BOOL bRedraw = TRUE);
Parametri
bMark
[in] Parametro booleano che determina se abilitare un colore di sfondo diverso.
bRedraw
[in] Parametro booleano che determina se ridisegnare immediatamente il controllo.
Osservazioni:
EnableMarkSortedColumn
utilizza il metodo CDrawingManager::PixelAlpha
per calcolare il colore da utilizzare per le colonne ordinate. Il colore selezionato si basa sul colore di sfondo regolare.
CMFCListCtrl::EnableMultipleSort
Abilita l'ordinamento delle righe di dati nel controllo elenco in base a più colonne.
void EnableMultipleSort(BOOL bEnable = TRUE);
Parametri
bEnable
[in] Valore booleano che specifica se abilitare la modalità di ordinamento di più colonne.
Osservazioni:
Quando si abilita l'ordinamento in base a più colonne, le colonne hanno una gerarchia. Le righe di dati verranno prima ordinate in base alla colonna primaria. Tutti i valori equivalenti vengono quindi ordinati in base a ogni colonna successiva in base alla priorità.
CMFCListCtrl::GetHeaderCtrl
Restituisce un riferimento al controllo intestazione.
virtual CMFCHeaderCtrl& GetHeaderCtrl();
Valore restituito
Riferimento all'oggetto sottostante CMFCHeaderCtrl
.
Osservazioni:
Il controllo intestazione per un controllo elenco è la finestra che contiene i titoli per le colonne. È in genere posizionato direttamente sopra le colonne.
CMFCListCtrl::IsMultipleSort
Controlla se il controllo elenco supporta attualmente l'ordinamento in più colonne.
BOOL IsMultipleSort() const;
Valore restituito
TRUE
se il controllo elenco supporta più ordina; FALSE
altrimenti.
Osservazioni:
Quando una CMFCListCtrl
classe supporta l'ordinamento multiplo, l'utente può ordinare i dati nel controllo elenco in base a più colonne. Per abilitare l'ordinamento multiplo, chiamare CMFCListCtrl::EnableMultipleSort
.
CMFCListCtrl::OnCompareItems
Il framework chiama questo metodo quando confronta due elementi.
virtual int OnCompareItems(
LPARAM lParam1,
LPARAM lParam2,
int iColumn);
Parametri
lParam1
[in] Primo elemento da confrontare.
lParam2
[in] Secondo elemento da confrontare.
iColumn
[in] Indice della colonna di ordinamento di questo metodo.
Valore restituito
Intero che indica la posizione relativa dei due elementi. Un valore negativo indica che il primo elemento deve precedere il secondo, un valore positivo indica che il primo elemento deve seguire il secondo e zero indica che i due elementi sono equivalenti.
Osservazioni:
L'implementazione predefinita restituisce sempre 0. Eseguire l'override di questa funzione per fornire un algoritmo di ordinamento personalizzato.
CMFCListCtrl::OnGetCellBkColor
Il framework chiama questo metodo quando deve determinare il colore di sfondo di una singola cella.
virtual COLORREF OnGetCellBkColor(
int nRow,
int nColumn);
Parametri
nRow
[in] Riga della cella in questione.
nColumn
[in] Colonna della cella in questione.
Valore restituito
Valore COLOREF
che specifica il colore di sfondo della cella.
Osservazioni:
L'implementazione predefinita di non usa i parametri di OnGetCellBkColor
input forniti e chiama semplicemente GetBkColor
. Pertanto, per impostazione predefinita, l'intero controllo elenco avrà lo stesso colore di sfondo. È possibile eseguire l'override OnGetCellBkColor
in una classe derivata per contrassegnare singole celle con un colore di sfondo separato.
CMFCListCtrl::OnGetCellFont
Il framework chiama questo metodo quando ottiene il tipo di carattere per una singola cella.
virtual HFONT OnGetCellFont(
int nRow,
int nColumn,
DWORD dwData = 0);
Parametri
nRow
[in] Riga della cella in questione.
nColumn
[in] Colonna della cella in questione.
dwData
[in] Dati definiti dall'utente. L'implementazione predefinita non usa questo parametro.
Valore restituito
Handle per il tipo di carattere utilizzato per la cella corrente.
Osservazioni:
Per impostazione predefinita, questo metodo restituisce NULL
. Tutte le celle di un controllo elenco hanno lo stesso tipo di carattere. Eseguire l'override di questo metodo per fornire tipi di carattere diversi per celle diverse.
CMFCListCtrl::OnGetCellTextColor
Il framework chiama questo metodo quando deve determinare il colore del testo di una singola cella.
virtual COLORREF OnGetCellTextColor(
int nRow,
int nColumn);
Parametri
nRow
[in] Riga della cella in questione.
nColumn
[in] Colonna della cella in questione.
Valore restituito
Valore COLOREF
che specifica il colore del testo della cella.
Osservazioni:
Per impostazione predefinita, questo metodo chiama GetTextColor
indipendentemente dai parametri di input. L'intero controllo elenco avrà lo stesso colore del testo. È possibile eseguire l'override OnGetCellTextColor
in una classe derivata per contrassegnare singole celle con un colore di testo separato.
CMFCListCtrl::RemoveSortColumn
Rimuove una colonna di ordinamento dall'elenco di colonne ordinate.
void RemoveSortColumn(int iColumn);
Parametri
iColumn
[in] Colonna da rimuovere.
Osservazioni:
Questo metodo rimuove una colonna di ordinamento dal controllo intestazione. CMFCHeaderCtrl::RemoveSortColumn
Chiama .
CMFCListCtrl::SetSortColumn
Imposta la colonna ordinata corrente e l'ordinamento.
void SetSortColumn(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
Parametri
iColumn
[in] Colonna da ordinare.
bAscending
[in] Valore booleano che specifica l'ordinamento.
bAdd
[in] Valore booleano che specifica se il metodo aggiunge la colonna indicata dall'elenco iColumn
di colonne di ordinamento.
Osservazioni:
Questo metodo passa i parametri di input al controllo intestazione usando il metodo CMFCHeaderCtrl::SetSortColumn
.
CMFCListCtrl::Sort
Ordina il controllo elenco.
virtual void Sort(
int iColumn,
BOOL bAscending = TRUE,
BOOL bAdd = FALSE);
Parametri
iColumn
[in] Colonna da ordinare.
bAscending
[in] Valore booleano che specifica l'ordinamento.
bAdd
[in] Valore booleano che specifica se questo metodo aggiunge la colonna indicata dall'elenco iColumn
di colonne di ordinamento.