CAPÍTULO 3
Programação visual com Software Livre
EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo.  Prólogo de Benoit Minisini



3.6 Alinhamento dos controles
Propriedade de alinhamento


Alguns contêiner dispõe de uma propriedade Arrangement que permite determinar como se alinha os controles dentro de um contêiner. Por padrão, o valor da propriedade é None, o que significa que as posições dos controles são livres, como é típico nas interfaces para WindowsTM ou em algumas bibliotecas QT.

Em outras bibliotecas gráficas como GTK+, ou nas definições da linguagem XUL desenhado  pelo  projeto  Mozilla  para  aplicações  web,  o  habitual  é  encontrar  contêiner  que definirá onde se localizará cada filho, de forma que o programador só indicará  o  modo  geral  de alinhamento e os controles se adaptarão em todo momento a qualquer alinhamento.

A principio desenhar interfaces desta maneira pode ser algo complicado para pessoas inexperiente, no entanto uma vez que se consegue alguma perícia, Terá grandes vantagens. A principal é que desenhar as janelas redimensionável com controles variados em seu interior.

Cada usuário pode aumentar ou diminuir o tamanho da janela, ou variar sua relação altura/largura, e a aplicação seguirá mantendo um aspecto coerente em cada momento, dentro de uns limites razoável de tamanho.

Gambas define várias possibilidades de alinhamento para os controles:

* None: Alinhamento livre, o contêiner não decide nada sobre a posição de seus filhos.

* Horizontal: todos os controles alinham-se da esquerda pra direita, ocupando todo o espaço em vertical dentro do contêiner.

* Vertical: Todos os controles alinham-se de sima para baixo, ocupando todo espaço           horizontal dentro do contêiner.

* LeftRight: os controles tratam de alinharem-se da esquerda para a direita, e se faltar          espaço de cima para baixo.

* TopBottom: os controles tratam de alinharem-se de cima para baixo e se faltar espaço       da esquerda para a direita.

Alem da propriedade geral Arrangement, existe a propriedade Padding, que é uma especie de queda livre na borda do contêiner, e uma propriedade Spacing, que determina o espaço de separação entre um controle e outro.

Cada controle, por sua vês, dispõe da propriedade Expand. Se o controle está localizado sobre um contêiner cuja propriedade Arrangemente é None, o valor Expand determina se este, junto com o resto dos controles do contêiner  que tenham a propriedade Expand = TRUE, tratam de ocupar o espaço livre que fica dentro do contêiner.
Para comprovarmos o efeito de todas estas propriedades criaremos um novo projeto gráfico chamado Alinhamento, com um só formulário de inicio FMain, em cujo interior criaremos dois botões e um RadioButton. Ao executa-lo veremos o resultado habitual: um formulário com três controles meio desordenados.
Figura 28
Figura 28. Projeto Alinhamento
Trocaremos o valor da propriedade Arrangement a Horizontal e executaremos o programa.

    Agora os controles estão alinhados na horizontal e ocupando   todo   espaço   vertical   do   contêiner
(Figura 29).
Ponhamos a borda do formulário como Resizable, de modo que possamos variar seu tamanho. Façamos varias provas de execução trocando sua relação aotura/largura.
Figura 29a
Figura 29b
Figura 29. Variação do formulário segundo altura/largura 
Como podemos observar, os controles seguem ocupando toda a largura do contêiner, enquanto a largura extra fica livre. Colocaremos agora a propriedade Expand do controle Button2 a TRUE, e voltamos a executa-lo. Com esta nova configuração, todo o espaço do contêiner é aproveitado, modificando a largura do Button2. Figura 30
Figura 30. Aproveitando o espaço do contêiner
Se colocarmos a propriedade Expand do Button1 como TRUE, O espaço extra será compartilhado por ambos controles.

Para deixar espaço visível pela borda do contêiner, podemos dar um valor a propriedade Padding, e para separar um puco cada controle utilizamos a propriedade Spacing. Os valores indicados são pixeis de separação.
Figura 31
Figura 31. Espaço compartilhado entre os controles Button1 e Button2
O efeito da propriedade Alinhamento não se aplica em tempo de desenho, deste modo se por erro trocarmos para um valor não desejado, podemos reverter sem perdermos a posição de cada controle dentro do contêiner.






HOME

Cópia literal

Extraído do livro “GAMBAS, programação visual com software Livre”, da editora EDIT LIN EDITORIAL S.L,  dos autores  Daniel Campos Fernández e José Luis Redrejo. Prólogo de Benoit Minisini

LICENSA DESTE DOCUMENTO


É permitido a cópia e distribuição da totalidade ou parte desta obra sem fins lucrativo. Toda cópia total ou parcial devera expressar o nome do autor e da editora e incluir esta mesma licença, adicionando se é uma cópia literal “Cópia literal”. Se é autorizada a modificação e tradução da obra  sem fins lucrativo sempre se deve constar na obra resultante  a modificação o nome da obra original o autor da obra original e o nome da editora e a obra resultante também deverá ser livremente reproduzida, distribuída, ao publico e transformada em termos similares ao exposto nesta licença.

Tradução

Cientista
 (Antonio Sousa)