Treinamento
Módulo
Personalizar o layout em páginas XAML do .NET MAUI - Training
Crie interfaces do usuário consistentes entre diferentes dispositivos usando o StackLayout e o Grid.
Não há mais suporte para esse navegador.
Atualize o Microsoft Edge para aproveitar os recursos, o suporte técnico e as atualizações de segurança mais recentes.
Este tópico demonstra como trabalhar com áreas de trabalho de exibição de lista. As áreas de trabalho são áreas virtuais retangulares que podem ser usadas para organizar itens em um controle de exibição de lista. Uma área de trabalho não é uma janela e não pode ter uma borda visível. Por padrão, o controle list-view não tem áreas de trabalho. Ao criar uma área de trabalho, você pode criar uma borda vazia à esquerda, na parte superior ou à direita dos itens ou fazer com que uma barra de rolagem horizontal seja exibida quando normalmente não haveria uma.
O exemplo de código C++ a seguir demonstra como criar uma área de trabalho com uma borda vazia de 25 pixels em seus lados superior, esquerdo e direito.
void SetWorkAreas1(HWND hWndListView)
{
#define EMPTY_SPACE 25
RECT rcClient;
GetClientRect(hWndListView, &rcClient);
rcClient.left += EMPTY_SPACE;
rcClient.top += EMPTY_SPACE;
rcClient.right -= (EMPTY_SPACE * 2);
SendMessage(hWndListView, LVM_SETWORKAREAS, 1, (LPARAM)&rcClient);
return;
}
O exemplo de código C++ a seguir demonstra como criar duas áreas de trabalho em um controle. Cada área de trabalho usa cerca de metade da área do cliente e é cercada por uma borda vazia de 25 pixels.
void SetWorkAreas2(HWND hWndListView)
{
#define EMPTY_SPACE 25
RECT rcClient;
RECT rcWork[2];
GetClientRect(hWndListView, &rcClient);
rcWork[0].left = rcClient.left + EMPTY_SPACE;
rcWork[0].top = rcClient.top + EMPTY_SPACE;
rcWork[0].right = (rcClient.right/2) - EMPTY_SPACE;
rcWork[0].bottom = rcClient.bottom;
rcWork[1].left = (rcClient.right/2) + EMPTY_SPACE;
rcWork[1].top = rcClient.top + EMPTY_SPACE;
rcWork[1].right = rcClient.right - EMPTY_SPACE;
rcWork[1].bottom = rcClient.bottom;
SendMessage(hWndListView, LVM_SETWORKAREAS, 2, (LPARAM)rcWork);
return;
}
Uma maneira de determinar a qual área de trabalho um item pertence é fazer o seguinte:
A função definida pelo aplicativo no exemplo de código C++ a seguir retorna o índice da área de trabalho à qual o item pertence. Se a função falhar, ela retornará –1. Se a função for bem-sucedida, mas o item não estiver dentro de nenhuma das áreas de trabalho, a função retornará 0, porque todos os itens que não estão dentro de uma área de trabalho se tornarão automaticamente membros da área de trabalho zero.
int GetItemWorkingArea(HWND hWndListView, int iItem)
{
UINT uWorkAreas = 0;
int nReturn = -1;
LPRECT pRects;
POINT pt;
if(!ListView_GetItemPosition(hWndListView, iItem, &pt))
return nReturn;
ListView_GetNumberOfWorkAreas(hWndListView, &uWorkAreas);
if(uWorkAreas)
{
pRects = (LPRECT)GlobalAlloc(GPTR, sizeof(RECT) * uWorkAreas);
if(pRects)
{
UINT i;
nReturn = 0;
ListView_GetWorkAreas(hWndListView, uWorkAreas, pRects);
for(i = 0; i < uWorkAreas; i++)
{
if(PtInRect((pRects + i), pt))
{
nReturn = i;
break;
}
}
GlobalFree((HGLOBAL)pRects);
}
}
return nReturn;
}
Treinamento
Módulo
Personalizar o layout em páginas XAML do .NET MAUI - Training
Crie interfaces do usuário consistentes entre diferentes dispositivos usando o StackLayout e o Grid.