Esse artigo faz parte da revista Clube Delphi Edição 89. Clique aqui para ler todos os artigos desta edição

RGIN: 0cm 0cm 0pt; TEXT-INDENT: 1cm; LINE-HEIGHT: normal">Adotaremos neste exemplo uma regra de que a resposta e cadastro de tópicos, somente será realizada por usuários logados. Para fazer o controle de permissão de resposta e usuário logado, utilizaremos User Controls para rotinas de ocultar áreas de acesso restrito.

 

Nota: Devido ao pouco espaço disponível, alguns formulários não serão apresentados completamente. Faça o download dos fontes no endereço do artigo na página da DevMedia e acompanhe todas as funcionalidades do site de fórum.

 

Criando o banco de dados de exemplo

Para iniciarmos o exemplo, criaremos uma estrutura simplificada de tabelas e relacionamentos (Figura 1).

 

Figura 1. Diagrama ER da aplicação

 

Após definida a estrutura, proceda com a criação do arquivo de dados. Crie sua base com o nome de “database.fdb”. Com o banco de dados criado, passaremos agora a criação da aplicação no Delphi 2006, fique a vontade para utilizar também a versão do Delphi 2005 (o script do banco encontra-se para download).

 

Criando a aplicação

Crie uma nova ASP.NET Web Application for Delphi .NET através do menu File do Delphi 2006, e nomeia a mesma como “forum”. Utilizaremos neste artigo como servidor Web o Internet Information Services (IIS), se preferir poderá utilizar outros servidores compatíveis.

Pressione OK e aguarde para que o Delphi realize as configurações necessárias e crie a estrutura de páginas do projeto, onde você será direcionado à página WebForm1.aspx. Utilize o Project Manager do Delphi e renomeie a página para “index.aspx”. Passaremos agora a criar a conexão da aplicação ao banco de dados criado anteriormente.

 

Configurando o componente de acesso a dados

Para realizar o acesso ao banco de dados Firebird faremos uso do provider, que deverá ser instalado no Delphi. Faça o download do componente no endereço www.firebirdsql.org. Localize no Project Manager a Global.asax e com um duplo clique ative a mesma, onde passaremos a configurar o componente de acesso.

Adicione na Global.asax um FbConnection, alterando o nome do mesmo para “conexao” e a propriedade Modifers para Public. Ao selecionar a propriedade ConnectionString uma caixa de diálogo será exibida, onde configuraremos as informações de acesso ao banco de dados (Figura 2). Informe o Data Source ou servidor do banco de dados, como “localhost” se a base estiver na mesma máquina.

 

Figura 2. Configurando o componente de acesso a dados

 

Informe também o Database (caminho do banco). Se a senha do Firebird não foi alterada, teste sua conexão (Test) e finalize a configuração clicando em Accept. Acesse agora o código do arquivo utilizando a guia Global.pas na parte inferior da tela.

Localize entre o final da declaração de métodos e o início da declaração de implementation, e crie a variável “dados” do tipo TGlobal. Os demais componentes de consultas e parâmetros SQL serão criados em runtime, o que permite um maior controle das ações a serem executadas no decorrer da programação.

 

Customizando as páginas do fórum

Antes de retornarmos à index.aspx, criaremos uma unit para configurar códigos com consultas da aplicação. No menu File>New>Other>Delphi for .NET Projects na lista New Files, selecione Unit e confirme. Salve o projeto e atribua o nome de “UntGeral.pas” para a unit criada.

Criaremos na UntGeral uma procedure, que chamaremos no Page_Load de todas as páginas, chamada VerificaConexao, responsável por abrir o componente de conexão a base de dados. Antes de codificarmos a mesma precisamos criar uma referência à Global.asax, onde colocamos o componente de acesso. Através do menu File>Use unit localize Global e confirme. Atribua o código da Listagem 1 a UntGeral.

 

Listagem 1. Criando a VerificaConexao na UntGeral

procedure VerificaConexao;

begin

  if dados = nil then

  begin

    dados := TGlobal.Create;

    dados.conexao.Open;

  end;

end;

 

Na página principal (index), no Page_Load chamaremos a procedure recém criada (não esqueça de adicionar a unit UntGeral).

 

Controle de usuários na página

Criaremos um User Control, para adicionar o cabeçalho e apresentação da página, além de realizarmos o controle de permissões e usuários logados no site. No menu File>New>Other em New ASP.NET Files selecione ASP.NET User Control e confirme.

Altere o nome do User Control para “header.ascx”. Adicionaremos na tela uma tabela para melhor organizar a disposição dos componentes. Adicionaremos também ao User Control os componentes que utilizaremos para controle dos usuários. Adicione dois TextBox (“TxtUsuario” e ”TxtSenha”), e altere a propriedade TextMode do controle de senha para Password.

Adicione também um Button, altere o nome para “BtnLogin” e o Text para “Login”. Adicione três Labels alterando o nome do primeiro para “LblUsuario”, deixando a propriedade Text em branco e Visible para False.

No segundo, dê o nome de “LblUser” com o Text de “Usuário:” e no último, dê o nome de “LblSenha” com Text de “Senha:”. Organize os componentes adicionados ao User Control conforme a Figura 3.

 

Figura 3. Organização dos componentes no User Control

 

No BtnLogin, adicione o código da Listagem 2, que será responsável pela autenticação do usuário e senha no banco de dados. Adicione no uses os namespaces FirebirdSQL.Data.Firebird e System.Web.Security. Adicione também através do menu File>Use Unit  a referência à Global.asax.

 

Listagem 2. Validando usuário e senha

procedure TWebUserControl1.BtnLogin_Click(

  sender: System.Object; e: System.EventArgs);

var

  FbCon: FbCommand;

  FbRead: FbDataReader;

begin

  try

    FbCon := FbCommand.Create(

      'select usuarios.nome, usuarios.posts, '+ ...

Quer ler esse conteúdo completo? Tenha acesso completo