Apresentando o Lazarus

Origem: A Bíblia do Lazarus, a enciclopédia livre.

Sobre o Lazarus



O Projeto Lazarus surgiu em 1 de fevereiro de 1999 por três pessoas: Cliff Baeseman, Shane Miller e Michael A. Hess. Em agosto de 1999 junta-se ao grupo Marc Weustink seguido então por Mattias Gaertner em Setembro de 2001. O Projeto Lazarus desde então só vem crescendo com cada vez mais componentes e recursos.

O Lazarus é um ambiente de desenvolvimento gratuito e de código livre para o compilador Free Pascal de Object Pascal (Pascal orientado a objetos), também gratuito e de código livre. O ambiente Lazarus IDE é produtivo, estável e rico para o desenvolvimento de aplicações gráficas, console e internet. Ele atualmente roda em sistemas operacionais Linux, MS Windows (95 ou superior), Mac OS X, *BSD e Solaris e provê um editor de código personalizável, além de um ambiente de criação visual de formulários (janelas) acompanhado de um gerenciador de pacotes, depurador (debugger) e completa integração da GUI com o compilador Free Pascal. Ele garante a qualidade que somente uma ferramenta RAD pode proporcionar.

Tanto a LCL do Lazarus, quanto à FCL do Free Pascal são licenciadas sobre a LGPL, que permite a você criar aplicações comerciais e vender livremente. Porém, a IDE, o Lazarus em si, é licenciada sobre a licença GPL, ou seja, você pode modificá-la mas não poderá vender a IDE.

Quando você ativa o Lazarus pela primeira vez, uma série de janelas flutuantes separadas irão aparecer em seu desktop (ambiente gráfico).


Imagem:Lazarus0.9.10.gif


A primeira, certamente funcionando ao alto do desktop, é chamada Lazarus Editor vXXXXXX - project1 (que será subsequentemente modificada para refletir a mudança no nome de seu corrente projeto aberto). Esta é a princípal janela de controle de seu projeto, e contém o Menu Princípal, a Barra de Botões e a Paleta de Componentes.

Ainda na Janela abaixo da barra de título temos o Menu Princípal composto das seguintes entradas usuais (em inglês):

  • File(Arquivo)

Este item de menu estão as operações com arquivo.

  • Edit(Editar)

Contém as operações de edição(copiar,cortar,colar,...).

  • Search(Localizar)

Operações de localização de determinado texto;

  • View(Vizualizar)

Exibe ou coloca na frente das demais janelas abertas: editor do código fonte, editor da janela, Unidades, Janelas(formulários), inspetor de objeto, ...).

  • Project(Projeto)
  • Run(Execução)
  • Components(Componentes)

...

E Abaixo desta à esquerda temos a Barra de Botões(atalhos para diversos itens do menu princípal) e à direita a Paleta de Componentes.

Sob a janela do Editor do Lazarus irá aparecer a janela do inspetor de objeto(object inspector) à esquerda, e à direita editor de código do Lazarus. Aqui pode ter outra janela menor, indicada com Form1, sobre a janela do editor de código. Se esta janela não é visível imediatamente, você pode fazê-la aparecer pressionando a tecla F12, que alterna entre o editor do código fonte e o editor da janela(formulário). Nesta janela de formulário, em que se encontra agora, você construirá a interface gráfica para sua aplicação. Esta janela somente funciona se você estiver editando um formulário. A operação do inspetor de objeto é discutida mais detalhadamente abaixo quando a paleta de componentes for descrito.

Quando você inicia um novo projeto (ou quando você ativa o Lazarus) por padrão irá ser construído um formulário(Form), que consiste de uma caixa preenchida com pontos(grid) para ajudá-lo a posicionar vários componentes no formulário, e uma barra ao longo do topo que contém os usuais botões de janela: Minimizar, Maximizar, e Fechar. Se você pressionar com seu mouse(ponteiro) dentro desta caixa, você irá ver as propriedade deste formulário no inspetor de objeto no lado esquerdo do desktop, caso não o esteja vendo pressione a tecla F11 para vizualiza-lo.

Outras janela que podem vir visíveis durante seu trabalho: O Inspetor do Projeto(Project Inspector), que contém detalhadamente os arquivos incluídos no seu projeto; A janela Mensagens(Messages), que exibe as mensagens do compilador, erros ou relatórios de progresso em seu projeto; se o Lazarus foi ativado em uma janela terminal, A janela terminal permanece visível e os detalhes das mensagens de compilação são colocados nela, na janela terminal.

Recursos do Lazarus


O Lazarus possui vários recursos úteis, alguns disponíveis no Delphi também, entre os quais:

  • Linhas Guias

Quando inserimos mais de um componente, e este componente esta com a propriedade Top, Height, Left e/ou Width igual a de outro componente no mesmo formulário (ou mesmo contâiner) aparecem linhas guias, apenas no modo de designer, como podemos ver na imagem abaixo:

Imagem:Guidelines.gif

  • Cópia e Colagem de Componentes

O Lazarus também possui a utilidade de cópia e colagem de componentes em tempo de design. Selecione um componente, ou vários arrastando o mouse, e pressione CTRL+C e logo em seguida pressione CTRL+V.

A Cópia de um Formulário inteiro ainda não está implementada!

  • Mudanças de Posição e Tamanho pelo Teclado

É possível mudar de posição e tamanho os componentes apenas com o teclado. Para mudar o tamanho segure Shift e pressione uma das teclas direcionais: ◄ - ▲ - ▼ - ►. Para mudar a posição segure Ctrl e pressione uma das teclas direcionais: ◄ - ▲ - ▼ - ► (ou 4, 8, 2, 6 do teclado número com o Num Lock desligado).

  • Vizualização Rápida do Código-Fonte dos Componentes

É possível vizualizar o código-fonte dos componentes no Lazarus. Basta clicar com o botão direito do mouse no componente desejado na paleta de componentes, aparecerá dois menus: Open Package {NomedoPacote}, e Open Unit {Caminho da Unit}. Clique no segundo para abrir para edição, e você verá o código-fonte do componente.

  • Vizualização Rápida de outros códigos-fontes

Segurando CTRL e clicando em alguma unit, na clausula Uses por exemplo, você é automaticamente "redirecionado" ao código-fonte do arquivo. Algumas versões do Delphi® também possuem esse recurso, mas no Lazarus esse recurso é melhor pelo fato de todo o código-fonte estar disponível, inclusive das units do Free Pascal (FPCSources);

  • Limpeza de Diretório

Se no Delphi® você tinha o costume de ficar criando arquivos *.bat para limpeza de diretórios (deleção de units compiladas, arquivos de backups...) o Lazarus possui um recurso de limpeza de diretório. Basta acessar o menu File -> Clean Directory ou Arquivo -> Limpar Diretório e especificar as extensões que você deseja deletar (Não use extenções *.pas ou *.pp ou o seu fonte será jogado fora).

Aproveitando o Código-Fonte

Em qualquer software OpenSource um bom conselho é aproveitar o fonte dele (inclusive no Kernel do Linux =]).

O Lazarus não foge à regra. Inclui todo o seu fonte tanto na versão binária quanto na versão de desenvolvimento, que está sempre atualizado.

Isso é muito bom, principalmente aos iniciantes.

Nos arquivos fontes normalmente vem inclusas informações como: o que falta ser implementado, o que foi modificado do Delphi, o que foi compatibilizado, bugs conhecidos entre outras. Veremos isso mais a seguir.

É muito fácil aproveitar essa vantagem, visto que o fonte do lazarus é muito organizado. Veja os diretórios fontes:

  • Lazarus/ide - Diretório da IDE do Lazarus. Contém todas as janelas e diálogos contido na IDE do Lazarus, desde o diálogo Find até o diálogo About;
  • Lazarus/lcl - A LCl está por aqui. Todo o código-fonte dos componentes do Lazarus que fazem parte da LCl estão aqui. Leia, modifique e compile;
  • Lazarus/components - Todos os componentes do Lazarus que não fazem parte da LCL (Como Sqlite, TDbf, Turbo Power IPro) estão por aqui;
  • Lazarus/examples - Este diretório é dedicado mais aos iniciantes e contém uma série de exemplos, desde os mais simples até aqueles um pouco mais complexos;

Entre outros...

Ler os fontes é simples. Na parte de cima do arquivo normalmente contém um cabeçalho com várias informações incluindo a versão de revisão, a data de revisão e a último pessoa que modificou o arquivo.

Normalmente nas units como Dialogs, Graphics entre outras, apenas as propriedades, métodos e eventos dos componentes são inseridos, o código deles normalmente ficam em arquivos *.inc separados junto com comentários que contém muitas informações.

Exemplo: no arquivo comctrls.pp está incluso o arquivos progressbar.inc (lá no final do arquivo) que contém o seguinte código (o código abaixo é apenas uma parte do código total, apenas um comentário):

{ current design flaws:

 - I decided to support some gtk-specific properties in this class. This
   won't break Delphi compatibility but for 100% Delphi compatibility
   a better approach would be to derive another class.
   BTW: When porting to another widget library you can safely ignore
          FBarShowText 
          FBarTextFormat
 - FBarTextFormat is a fixed string by now, hard-coded in the gtk-interface
 - lot's of properties are missing
 - I spend no thought on the usage of type integer for the range for the bar,
   maybe this can cause trouble some day (and already will when FMin < 0!) }

Outro exemplo é no arquivo Graphics.pp que contém também muito informação sobre Gráficos (perceba que este não é um arquivo *.inc, isso significa que não foi incluso por uma unit)

Graphics.pp

{ TPicture }
 { TPicture is a TGraphic container.  It is used in place of a TGraphic if the
   graphic can be of any TGraphic class.  LoadFromFile and SaveToFile are
   polymorphic. For example, if the TPicture is holding an Icon, you can
   LoadFromFile a bitmap file, where if the class is TIcon you could only read
   .ICO files.
     LoadFromFile - Reads a picture from disk. The TGraphic class created
       determined by the file extension of the file. If the file extension is
       not recognized an exception is generated.
     SaveToFile - Writes the picture to disk.
     LoadFromClipboardFormat - ToDo: Reads the picture from the handle provided in
       the given clipboard format.  If the format is not supported, an
       exception is generated.
     SaveToClipboardFormats - ToDo: Allocates a global handle and writes the picture
       in its native clipboard format (CF_BITMAP for bitmaps, CF_METAFILE
       for metafiles, etc.).  Formats will contain the formats written.
       Returns the number of clipboard items written to the array pointed to
       by Formats and Datas or would be written if either Formats or Datas are
       nil.
     SupportsClipboardFormat - Returns true if the given clipboard format
       is supported by LoadFromClipboardFormat.
     Assign - Copys the contents of the given TPicture.  Used most often in
       the implementation of TPicture properties.
     RegisterFileFormat - Register a new TGraphic class for use in
       LoadFromFile.
     RegisterClipboardFormat - Registers a new TGraphic class for use in
       LoadFromClipboardFormat.
     UnRegisterGraphicClass - Removes all references to the specified TGraphic
       class and all its descendents from the file format and clipboard format
       internal lists.
     Height - The native, unstretched, height of the picture.
     Width - The native, unstretched, width of the picture.
     Graphic - The TGraphic object contained by the TPicture
     Bitmap - Returns a bitmap.  If the contents is not already a bitmap, the
       contents are thrown away and a blank bitmap is returned.
     Pixmap - Returns a pixmap.  If the contents is not already a pixmap, the
       contents are thrown away and a blank pixmap is returned.
     PNG - Returns a png.  If the contents is not already a png, the
       contents are thrown away and a blank png (TPortableNetworkGraphic) is
       returned.
     PNM - Returns a pnm.  If the contents is not already a pnm, the
       contents are thrown away and a blank pnm (TPortableAnyMapGraphic) is
       returned.
     }                                             

O inglês é de fácil entendimento e você não terá muitos problemas em traduzi-lo. Mesmo não sabendo muito inglês, um dicionário irá fazer o serviço direitinho.

Personal tools