Desenvolver aplicacoes usando um IDE como o Lazarus, pressupoe conhecimento da linguagem de programacao subjacente. Pois a criacao de um programa sempre ira precisar que se escreva algum codigo, principalmente para os eventos. No caso do Lazarus estamos falando do Free Pascal. Este e um curso introdutorio ao Free Pascal oferecido na modalidade a distancia e esta organizado em oito modulos:1. Principios basicos, tipos, variaveis, constantes e comando de atribuicao2. Comandos condicionais (if)3. Comandos de repeticao (while, repeat e for)4. Tipos definidos pelo usuario (subrange, set, enumerados, arrays, registros)5. Ponteiros6. Procedimentos e funcoes7. Manipulacao de strings8. Classes e objetosO curso sera ministrado no ambiente virtual de aprendizagem Moodle. E uma ferramenta voltada para ensino a distancia com todos os recursos de um ambiente dessa natureza: chat, forum, exercicios, questionarios, etc.Caso voce tenha interesse em fazer o curso, faca sua pre-inscricao aqui. Assim que completarmos a turma enviaremos um e-mail a voce informando a data de inicio do curso e seu login e senha de acesso ao ambiente de aprendizagem.Pre-inscricoes encerradas.Atualizado em 03/07/2011. Neste post vamos mostrar como criar um formulario de cadastro, independente da tabela do banco de dados. A ideia e que, ao abrir o formulario, um trecho de codigo identifica cada campo da tabela, instancia um TDBEdit para esse campo e ainda o identifica com um TLabel. Alem do mais esse codigo sera implementado em um formulario pai. Cada formulario de cadastro sera derivado ou herdado deste. Nosso demo tera um form principal que chamara o form de cadastro, o form pai onde todas as acoes irao acontecer, um form de cadastro derivado e um Data Module.No Data Module colocamos os componentes de acesso ao banco de dados. Para isso iremos utilizar ZeosLib com banco de dados PostgreSQL. Coloque entao um TZConnection para conectar ao seu banco de dados e o configure adequadamente. Coloque tambem uma TZQuery e um TZUpdateSQL. Consulte o post Lazarus Conectando PostgreSQL com ZeosLib se tiver duvida de como fazer essas definicoes. Nao coloque TDataSource no Data Module. Iremos coloca-lo no form pai.O form PaiJa existe um form na aplicacao. Vamos inserir um novo form e deixar esse primeiro para ser o principal. No novo form vamos criar a propriedade Query conforme mostra o codigo abaixo. Inclua a unit ZDataset na clausula uses.private { private declarations } fQuery: TZQuery; function GetQuery: TZQuery; procedure SetQuery(NewQuery: TZQuery); public { public declarations } property Query: TZQuery read GetQuery write SetQuery; end;var frmDinamico: TfrmDinamico; vetorCampos: array of TDBEdit; vetorLabel: array of TLabel;implementation{$R *.lfm}procedure TfrmDinamico.FormShow(Sender: TObject);var Coluna : integer; NomeColuna : TDBEdit; NomeLabel : TLabel; Topo : integer;begin Topo := 65; dsTabela.DataSet := fQuery; fQuery.Open; SetLength(vetorCampos, fQuery.FieldCount); SetLength(vetorLabel, fQuery.FieldCount); for Coluna := 0 to fQuery.FieldCount - 1 do begin NomeColuna := TDBEdit.Create(Self); NomeColuna.Parent := Self; NomeColuna.Left := 105; NomeColuna.Top := Topo; NomeColuna.Width := 15 + fQuery.Fields[Coluna].DisplayWidth * 7; NomeColuna.DataSource := dsTabela; NomeColuna.DataField := fQuery.Fields[Coluna].FieldName; NomeColuna.Tag := Coluna; Topo := Topo + 25; NomeColuna.Visible := True; NomeColuna.Name := 'DBEdit' + IntToStr(Coluna); vetorCampos[Coluna] := NomeColuna; NomeLabel := TLabel.Create(Self); NomeLabel.Parent := Self; NomeLabel.Left := 5; NomeLabel.Top := NomeColuna.Top - NomeLabel.Height; NomeLabel.Caption := fQuery.Fields[Coluna].DisplayName; NomeLabel.Tag