Pular para o conteúdo principal

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.

Comentários

Mimmy disse…
Aguardando o próximo post!!!
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.
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".

Postagens mais visitadas deste blog

Lazarus - Acessando banco de dados com SQLdb - Parte I

Para fazer nossa primeira aplicação usando banco de dados no Lazarus vamos usar o SQLite e o conjunto de componentes nativo SQLdb. Inicialmente vamos apresentar passo como essa aplicação foi criada. Essa foi a maneira que eu fiz, e eu agradeço sugestões e questionamentos que pessoas que já passaram por essa experiência. Depois irei fazer algumas considerações sobre o uso do SQLdb. SQLite SQLite é uma biblioteca que implementa um motor de banco de dados SQL. É livre para qualquer finalidade, seja uso particular ou comercial. Lê e escreve em um único arquivo que pode ter além de tabelas, índices, gatilhos e visões. Executa em várias plataformas e é indicado para aplicações embarcadas. Maiores detalhes podem ser encontrados no site oficial. Para usá-lo, baixe-o do site e faça a instalação adequada para o seu sistema operacional. No Windows isso é muito simples, apenas copie sqlite3.dll para o system32 da pasta do sistema operacional. Existe uma ferramenta de linha de comando chamada

Tipos de dados no SQLite

Em SQLite, diferente de outros motores de banco de dados, o tipo de dado de um valor está associado com o valor propriamente dito, e não com o seu contêiner. É um sistema de tipo dinâmico. Um campo de uma tabela em SQLite pode receber qualquer tipo de dado. Assim, o SQLite simplesmente ignora o tipo informado no comando CREATE TABLE. Então, dizemos que no SQLite existem classes de armazenamento. E essas classes são: NULL - como em qualquer outro banco de dados. INTEGER - inteiro com sinal, armazenado em 1, 2, 3, 4, 6 ou 8 bytes dependendo da grandeza do valor. REAL - valor de ponto flutuante armazenado em 8 bytes. TEXT - uma string armazenada usando UTF-8, UTF-16BE ou UTF-16LE. BLOB - armazena um blob, como indica o nome. Uma coluna INTEGER PRIMARY é uma exceção. Só aceita números inteiros. Qualquer valor em um comando SQL tem uma classe de armazenamento implícita. Durante a execução do comando SQL, o SQLite pode converter valores entre classes numéricas (INTEGER e REAL)

Lazarus - Criando relatórios com FortesReport (Parte I)

Para a criação de relatórios, o Lazarus já trás o componente LazReport, no entanto ele precisa ser instalado no IDE. Para fazer a instalação do pacote, acesse o menu Package -> Open package file (.lpk) . Localize o diretório de instalação do Lazarus e na pasta components abra lazreport e depois source . Abra o pacote lazreport.lpk , clique em Compile e depois em Install . Como já sabemos isso irá recompilar o IDE. Depois de inicializado novamente estará disponível a aba LazReport . Leia aqui um tutorial básico sobre o LazReport. No entanto queremos mostrar uma alternativa ao LazReport . Por essa razão, vamos apresentar neste artigo o FortesReport . Para quem conhece o QuickReport, que fazia parte do Delphi, não terá dificuldade de desenvolver com esse componente. Baixe o pacote aqui e instale. Os procedimentos são semelhantes aos que mostramos acima. Você terá uma nova aba chamada Fortes Report . Conectando o banco de dados O primeiro passo para criar a aplicação é fazer