Ir para o conteúdo

Anchors

Introdução

Provavelmente, por mais que uma vez, se depararam com situações em que é necessário permitir que o utilizador possa redimensionar a janela, mas não querem que a organização dos controlos sofra com isso. Para a maioria dos casos, as Anchors (ou âncoras), servem perfeitamente para evitar processamentos desnecessários.

Entender as anchors

Para que se possa tirar o máximo partido das âncoras, é importante reter a noção da sua filosofia. Tal como as âncoras das embarcações, as âncoras do VisualBasic servem para "ancorar" os controlos, evitar que se mexam do sítio por esta ou por aquela razão. Todos os controlos possuem 4 pontos de fixação para ancoragem:

Cada ponto verde, na figura, representa um ponto de ancoragem e este ponto encontra-se exactamente no centro das respectivas arestas. Para entender como é que estas âncoras funcionam em relação à janela teremos de imaginar que por cada ponto de ancoragem que se determine como fixo, é soldada uma barra de ferro entre o controlo e o limite da janela. Esta barra de ferro é inquebrável e nunca varia de tamanho.

Na imagem acima, redimensionar a janela faz com que o controlo acompanhe o canto inferior direito da janela, mantendo sempre a mesma distância entre ele e o limite da janela, pois as barras de ferro a isso obrigam.

Ao redimensionar a janela nesta situação, e se a barra de ferro é inquebrável e invariável, alguma coisa tem de ceder. O que cede sempre é o controlo. Se existe um ponto que o fixa a uma determinada distância do limite esquerdo e direito da janela, a mudança reflecte-se no seu comprimento. No caso da imagem acima, o controlo vai alterar a sua largura, "esticando" ou "encolhendo" para que a distância aos limites seja sempre exactamente a mesma.

Na situação da imagem acima, todos os pontos de ancoragem estão fixos. Isto fará com que o controlo altere o seu tamanho tanto em largura como em altura para que as distâncias de ancoragem sejam respeitadas.

Na situação da imagem acima, prevemos que a largura do controlo seja afectada, mas o que acontece com a altura? A tendência de um controlo é manter-se no sítio onde foi inicialmente colocado. Neste caso, a altura do controlo não se vai alterar, pois nada o obriga a isso, mas a sua posição vertical vai alterar para respeitar a tendência que o controlo tem em ficar no mesmo sítio. Sem ancoragem nos limites verticais, podemos pensar no comportamento da posição vertical do controlo como uma proporcionalidade: se o controlo foi inicialmente colocado a 30% da altura total da janela, independentemente da nova altura da janela, o controlo terá a tendência de se manter a 30% da altura total. Por exemplo, se a janela tiver uma altura de 100 pixeis, o controlo está posicionado no pixel 30, mas se redimensionarmos a janela para uma altura de 1000 pixeis, o controlo posiciona-se no pixel 300. O mesmo acontece se não se fixarem âncoras nos limites horizontais.

E se não fixar nenhum ponto?

Se não fixarmos nenhum ponto, o controlo vai atender à sua tendência e mantém-se na mesma posição, na relação proporcional com o tamanho original da janela em que foi colocado.

Exemplo de configuração de âncoras para uma janela

No exemplo de configuração, os limites pintados a vermelho representam os limites que estão ancorados à janela.

Ideia: Exprimente desenhar um form semelhante e aplicar a ancoragem do exemplo para melhor entender o seu funcionamento.