Pular para o conteúdo principal

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

Entrando múltiplas linhas

Vimos antes, que o componente TEdit permite a entrada de uma única linha de texto. Para possibilitar a entrada de mais de uma linha de texto usaremos o componente memorando (TMemo). Selecione o componente Memo da paleta Standard e o insira no form dentro de um GroupBox, como mostrado na figura abaixo.
Usaremos este componente para mostrar todos os dados pessoais cadastrados quando for pressionado o botão correspondente. Assim, precisamos modificar algumas propriedades de Memo.
  • Align - alClient. Para o Memo preencher todo o GroupBox, onde ele está contido.
  • Lines - clique no botão elipse e apague o conteúdo.
  • Name - mmDadosPessoais.
  • ReadOnly - True. Define que o usuário não pode editar o conteúdo do controle.

Juntando tudo

Insira um novo botão no  form. Esse botão, quando pressionado, mostrará os dados pessoais no campo Memo. Defina a propriedade Caption como Mostrar, Default como True e Name como btnMostrar
A definição da propriedade Default como True indica que, se o usuário pressionar a tecla Enter, o evento OnClick será executado.
Agora iremos escrever o código que fará todo o trabalho para nós.
Como vimos no nosso primeiro programa, se queremos que a ação aconteça quando pressionarmos o botão, então deveremos programar o evento OnClick do botão. Dê um duplo clique no botão e o editor de código será aberto para inserirmos o código.
Vamos analisar cada linha do código mostrado na figura acima. A linha 52 é responsável por deletar as linhas do memorando. Dessa forma toda vez que inserirmos os dados de uma nova pessoa e pressionarmos o botão btnMostrar, os dados anteriores são apagados. Observe que, para chamar um método de um componente, informamos o nome do componente seguido do nome do método separados por ponto.
A propriedade  Lines do componente  Memo é um objeto do tipo  TStrings, portanto possui propriedades e métodos. Dos métodos disponíveis de Lines usaremos Add, para adicionar novas linhas ao texto do controle.
Na linha 53 do código o nome da pessoa é adicionada ao texto. Observe a forma de invocarmos o método Add. Add é um método de Lines, e Lines é uma propriedade de mmDados. O argumento do método deve ser uma string. Como argumento usamos um literal, que identifica o dado da linha de texto, concatenado ao
nome da pessoa, que é dado pela propriedade Text  do componente edNome. A linha 54 é semelhante à 53, não merece maiores comentários.
A profissão da pessoa é adicionada na linha 55. As  profissões estão na propriedade Items de lbxProfissao. O índice do elemento selecionado no ListBox é dado pela propriedade ItemIndexItems  pode ser tratado como um vetor indexado por ItemIndex. Por isso a linha 55 é escrita dessa forma.
Na linha 56 adicionamos a idade da pessoa, definida pela propriedade Position de ScrollBar. Position é uma propriedade numérica do tipo integer. Antes de concatenar seu valor é necessário convertê-lo para string. Por isso usamos a função IntToStr(), para converter um número inteiro para string.
A linha 57 pode ser analisada de forma semelhante à linha 55. Portanto não será necessário acrescentar nenhum comentário a respeito.
No caso da linha 58 e seguintes, é o que se faz necessário para mostrar o sexo da pessoa. Como a propriedade Checked do componente CheckBox é boolean, usamos isso para implementar uma estrutura de decisão. Se Checked estiver marcado (True) então será mostrada situação ativo, caso contrário será mostrada situação inativa.
Bem, esse é um programa didático. Foi usado apenas para apresentar alguns componentes. Logo iniciaremos uma nova série de posts para apresentar mais recursos dessa poderosa ferramenta.

Comentários

professor...
Alguma dica de como fazer para que um edit me retorne a data e hora do sistema.. e que depois eu consiga obter o tempo de permanencia entre a entrada e saida?
obrigado pelo Blog... mt util mesmo!!!!
Robson disse…
Caro professor, segui suas dicas, muito fáceis de se aprender mas, quando compilei apareceram 51 erros. Exemplo : !Dados.lpr(17,1)Error: Undefined symbol: WSRegisterSelectDirectoryDialog.
Estou começando agora, poderia me ajudar.
Obrigado, Robson.(vrobson@ig.com.br)
Professor Carlos disse…
Qual a versão do Lazarus? Sua instalação do Lazarus aconteceu sem problemas? Quando você executa o Lazarus aparece uma janela dizendo que não foram encontrados os fontes do fpc?
mangá disse…
professor Carlos, sou do primeiro ano de informatica, preciso de algumas orientações quanto ao programa Lazarus...
Se nao for encomo pesso que me mande alguas dicas ou algo que possa me ajudar(kenyd_manga@hotmail.com), para que eu me sobresaia nessa matéria!
E tambem pretendo seguir carreira.
Atentamente de seu novo fã:kenyd da silva fernandes
Unknown disse…
na linha
mmDadosPessoais.Lines.Add('Profissão:' + lbxProfissao.items[lbxProfissao.ItemIndex]);
Esta dando esse erro, pq sera?
unit1.pas(58,3) Fatal: Syntax error, ";" expected but "identifier MMDADOSPESSOAIS" found
Professor Carlos disse…
Verifique se na linha anterior a essa está faltando o ; no final da linha
Unknown disse…
opra, vlw ajudou muito era isso mesmo era pq o codigo dessa linha e grande e ficou dificil de verificar, uma duvida que eu tenho e que no lbxProfissão nao tem a opção item index no inspetor de objetos isso e normal?
Professor Carlos disse…
É normal sim. Algumas propriedades só são acessíveis em tempo de execução, via código.

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