Páginas

sexta-feira, 15 de janeiro de 2010

Lazarus - Explorando os Componentes Básicos (Parte II)

Escolhendo opções

Há dois controles que permitem ao usuário escolher diferentes opções. O primeiro é a caixa de verificação (TCheckBox), que corresponde a uma opção que pode ser selecionada livremente. O segundo controle é o botão de rádio (TRadioButton), que corresponde a uma seleção exclusiva. Por exemplo, se você tiver dois botões de rádio com rótulos A e B, você pode selecionar um dos dois, mas não ambos ao mesmo tempo. A outra característica é que a escolha de uma das opções é obrigatória. Selecione uma caixa de verificação na paleta Standard e insira-o no form. Usaremos a caixa de verificação para definir a situação cadastral da pessoa - pode assumir a situação Ativo, se a caixa estiver marcada e Não ativo, caso contrário.

Vamos alterar as propriedades da caixa de verificação:
  • Caption - digite Ativo.
  • Checked - defina como True. Especifica que o controle estará marcado por padrão.
  • Name - chxSituacao.

Vamos inserir um componente para selecionarmos o sexo da pessoa que está sendo cadastrada. Nesse caso precisamos de um componente que possibilite mais opções. Usaremos então o grupo de botões de rádio (TRadioGroup). Grupo de botões de rádio permite que sejam inseridos vários botões, cada um com uma opção. Selecione o grupo de botões de rádio da paleta Standard e o insira no form.

Defina as propriedades do grupo de botões da seguinte forma:
  • Caption - Sexo.
  • ItemIndex - 0. Define o item do grupo de botões que será selecionado por padrão (o primeiro item é 0).
  • Items - Masculino/Feminino. Lista de opções do grupo de botões.
  • Name - rgSexo.
Para definir a lista de opções, clique no botão elipse no lado direito da propriedade Items no Inspetor de Objetos. Será aberto o editor de String List. Digite uma opção em cada linha e confirme pressionando o botão Ok. A propriedade Items é do tipo TStrings e será utilizada em outros componentes, com o mesmo nome ou não. Observe que o Lazarus tem uma linha azul que indica se os controles estão alinhados.

Uma lista com muitas opções

Se você precisar de muitas opções os botões de rádio não são apropriados, a menos que você tenha um  form realmente grande. Não se deve usar mais que 5 ou 6 botões de rádio. A solução é usar caixas de lista (TListBox). Uma caixa de lista pode manter um grande número de opções em um pequeno espaço, pois ela tem uma barra de rolagem para mostrar na tela apenas uma pequena parte da lista completa. Outra vantagem é que podemos facilmente adicionar ou remover elementos da lista. Caixas de lista também podem permitir uma única escolha ou múltiplas escolhas.
A caixa de lista usada em nossa aplicação servirá para a definição da profissão do cadastro de dados pessoais. Selecione um TGroupBox da paleta Standard e o insira no form conforme a figura mostrada a seguir. Defina a propriedade Caption dessa caixa como Profissão. Agora coloque uma caixa de lista dentro desta caixa.
Defina as propriedades da caixa de lista assim:
  • Align - alClient. Define o alinhamento do controle. Neste caso a caixa de lista é alinhada para preencher exatamente o controle onde está contida.
  • ItemIndex - 0. Define que item será selecionado por padrão.
  • Items - Carpinteiro/Analaista de Sistemas/Arquiteto/Enfermeira/Engenheiro/Pedreiro e outras que você preferir. Para informar as opções o procedimento é semelhante ao que foi feito na propriedade Items de TRadioGroup.
  • Name - lbxProfissao.
  • Sorted - True. Define que os elementos da lista serão ordenados.

Muitas opções em pouco espaço

Caixas de lista ocupam muito espaço na tela e suas opções são fixas, não dando ao usuário a oportunidade e escolher uma opção diferente daquelas previamente programadas. 
Podemos solucionar essas dificuldades usando caixas combinadas (TComboBox). Uma caixa combinada reúne em um mesmo controle uma caixa de edição, onde se pode digitar algum texto, e uma caixa de lista que é aberta quando pressionamos a seta. O próprio nome do controle sugere que ele é a combinação de dois
componentes, um Edit e um ListBox. No entanto, o comportamento do ComboBox pode mudar,  dependendo do valor da propriedade  Style. Veremos um pouco mais adiante como definir corretamente esta propriedade para que o componente tenha o comportamento desejado.
Vamos usar uma caixa combinada para definir a escolaridade no cadastro de dados pessoais. Selecione o componente na paleta Standard e o posicione no  form conforme a figura. Coloque um rótulo também para identificar a caixa. No rótulo defina a propriedade Caption como Escolaridade.

Defina as seguintes propriedades:
  • Name - cbxEscolaridade.
  • Sorted - True. Define que os elementos da lista estarão ordenadas.
  • Style - csDropDown. Define o estilo de apresentação da caixa. Neste caso a caixa permite a escolha de uma opção e também a edição de uma nova opção. csDropDownList não permite edição, mas podem ser digitados caracteres que posicionam na primeira opção que inicie com os caracteres digitados.
Escolhendo um valor de um intervalo

Vamos explorar agora o controle chamado barra de rolagem (TScrollBar). Barras de rolagem são normalmente associados com outros componentes, tais como caixas de lista. Nesses casos a barra de rolagem é  parte do componente, uma propriedade sua.
Iremos usar a barra de rolagem para definir a idade da pessoa no cadastro. 
Selecione então uma barra de rolagem na paleta Standard e o insira no  form conforme é mostrado na figura abaixo. Coloque um rótulo para identificar o componente.

Vamos alterar as seguintes propriedades do componente:
  • LargeChange - 10. Especifica o quanto Position varia quando clicamos nso lados da barra.
  • Max - 100. Especifica o valor máximo de Position.
  • Min - 1. Especifica o valor mínimo de Position.
  • Name - sbIdade.
  • Position - 1. Define a posição atual da barra.
  • SmallChange - 1. Especifica o quanto Position varia quando clicamos nas setas.
No rótulo que foi inserido defina a propriedade Caption como Idade.
No próximo post concluiremos este programa.

5 comentários:

Mimmy disse...

Aguardando o próximo post!!!

Valdeci Alves disse...

mt bom seu blog... está me ajudando mt... eu nunca fiz nenhum curso de programação!!!

Como fazer pra chamar 2 form a partir do main... consigo chamar apenas um, colocando na implementation "uses u_form2", mas naum consigo fazer o mesmo pra chamar o form 3!!!
Alguma dica!! valves.martins@hotmail.com

Professor Carlos disse...

Obrigado.
Na mesma linha que você colocou "uses u_form2" você altera pra ficar assim "uses u_form2, u_form3" e assim por diante. Sempre que incluir mais um form, vai incluindo a unit nessa linha separando por vírgula.

Valdeci Alves disse...

Obrigado pela resposta tão rápida!!!
Fiz como me falou, mas ainda assim continua não dando certo:

implementation
uses u_entrada,
uses u_saida;

chamo esse 2 form atraves de 2 btn (Entrada/Saida) no form principal.

só pra saber: To tendando fazer um programinha simples de controle de entrada e saida de um estacionamento de veiculo (meu mesmo)!!

Me desculpe se a minha ignorancia sobre o assunto for mt grande, mas td que já aprendi foi tudo na unha mesmo!!! sei que ainda terei que ralar mt pra ficar + ou -... mas chego lá!!!

Professor Carlos disse...

Assim:

implementation
uses u_entrada, u_saida;

Não pode ter dois "uses".

 
Creative Commons License
This work by Carlos Alberto P. Araújo is licensed under a Creative Commons Atribuição-Uso não-comercial-Compartilhamento pela mesma licença 3.0 Brasil License.