Tutorial
Construindo uma aplicação Intraweb com Múltiplos Forms e um Menu Principal
Por Adenilton Rodrigues
[email protected] Belo Horizonte – MG 2005
Este documento pod pode e ser livremente copiado e distribuído. Sua modificação modificação só será permitida mediante mediante contato prévio prév io com o autor.
1
Construindo uma aplicação Intraweb com Múltiplos Forms E um Menu Principal Este tutorial demonstrará a técnica da criação de uma aplicação Intraweb usando múltiplos forms e um menu principal para acioná-los. O funcionamento será similar a uma aplicação GUI tradicional do Windows. Vamos criar uma aplicação com um formulário Principal e 3 formulários adicionais, que a título de exemplo, serão: 1. 2. 3. 4.
Form Form Form Form
Principal Cadastros Consultas Relatorios
Uma caracteristica dessa aplicação é que o Menu Principal será visivel em todos os forms sem a necessidade de codificação extra ou redundância de recursos e controles. Para tanto, o menu será inserido dentro de um objeto Tframe do Delphi e incorporado a todos os forms da aplicação. 1o. passo: Criar a Aplicação Intraweb: •
Execute o Delphi e acesse a opção: File, New, Other, Intraweb
2
•
• •
•
Escolha Intraweb Application Wizard. Vamos trabalhar com uma aplicação StandAlone.
Escolha StandAlone Application e clique OK. Após aparecer os elementos gráficos do projeto, salve sua aplicação com os seguintes nomes: UPrincipal.pas, UserSessionUnit.pas, ServerController.pas e Frames.dpr Mude o nome do Form Principal para frmPrincipal.
2o. passo: Criar o Frame para colocar o Menu Principal da Aplicação: •
no Delphi acesse a opção: File, New, Other, Intraweb
•
Escolha New Frame e clique OK. Na próxima tela escolha HTML 4.0 3
Ao aparecer o form do Frame, mude seu nome para framMenu e salve com o nome d e uMenu;
•
•
Pegue um objeto TIWMenu na paleta do Intraweb e arraste para o Frame. Coloque sua propriedade Align em alClient. Ajuste o frame para ficar parecido com a figura abaixo:
Vá ao Object Inspector do Delphi, escolha o objeto IWFrameRegion e modifique as seguintes propriedades: Align = alClient; ClipRegion = False; HorzScrollBar.Visible = False; VertScrollBar.Visible = False; Ainda no Object Inspector, encontre o objeto framMenu e modifique as seguintes propriedades: HorzScrollBar.Visible = False; VertScrollBar.Visible = False; Este procedimento visa evitar o aparecimento de barras de rolagem ao apresentar as opções do menu.
•
•
•
Vá até a paleta Standard do Delphi e arraste para o frame um objeto do tipo TMainMenu:
Clique sobre o objeto IWMenu1 (a região cinza escuro do Frame) e faça com que a propriedade AttachedMenu fique linkada com o MainMenu1.
Configure a propriedade Align para alTop (ou alClient)
4
•
•
Dê um clique duplo sobre o MainMenu1 e adicione os items abaixo:
Pra facilitar o trabalho, mude a propriedade Name dos items criados no MainMenu para: mnuFormularios, mnuCadastros, mnuConsultas, mnuRelatorios, mnuSair.
3o. passo: Criar os formularios adicionais •
Execute o Delphi e acesse a opção: File, New, Other, Intraweb
5
•
• •
Escolha New Form e clique OK. Na próxima tela escolha escolha Application Form
Mude o nome desse Form para frmCadastros e salve com o nome de uCadastros.pas Repita os procedimentos acima e crie mais d ois novos forms: 2o. form: O nome será frmConsultas e será salvo como uCon sultas.pas 3o. form: O nome será frmRelatorios e será salvo como uRelatorios.pas
4o. passo: Definir as rotinas que apresentarão os formulários. •
Acrescente à clausula Uses da unit do Frame (arquivo uMenu) as seguintes units: IWAppForm, IWInit, IWTypes. Você terá uma configuração similar à abaixo: unit uMenu; interface uses SysUtils, Classes, Controls, Forms, IWVCLBaseContainer, IWColor, IWContainer, IWRegion, IWHTMLContainer, IWVCLBaseControl, IWBaseControl, IWBaseHTMLControl, IWControl, IWCompMenu, Menus, IWAppForm, IWInit, IWTypes;
•
Na seção implementation, adicione as units dos formulários adicionais: implementation {$R *.dfm} Uses uCadastros, uConsultas, uRelatorios;
6
•
Na seção Private do Frame, defina a seguinte procedure: type TframMenu = class(TFrame) IWFrameRegion: TIWRegion; IWMenu1: TIWMenu; MainMenu1: TMainMenu; mnuFormularios: TMenuItem; mnuCadastros: TMenuItem; mnuConsultas: TMenuItem; mnuRelatorios: TMenuItem; N1: TMenuItem; mnuSair: TMenuItem; private { Private declarations } procedure ShowForm(AFormClass: TIWAppFormClass); public { Public declarations } end;
•
Pressione CTRL+SHIFT+C pro Delphi criar a estrutura da procedure e nela escreva: procedure TframMenu.ShowForm(AFormClass: TIWAppFormClass); begin TIWAppForm(IWInit.WebApplication.ActiveForm).Release; AFormClass.Create(WebApplication).Show; end;
Esta rotina se encarregará de deixar apenas um formulario visivel todas as vezes que algum item do menu for acionado. 5o. passo: Realizar as chamadas aos formulários através do menu •
Dê um clique duplo sobre o objeto TmainMenu do Frame. Dê um clique duplo sobre o item Cadastros e escreva o código abaixo para o evento OnClick: procedure TframMenu.mnuCadastrosClick(Sender: TObject); begin ShowForm(TfrmCadastros); end;
•
Repita o procedimento para os demais itens, e ao final seu código ficará assim: procedure TframMenu.mnuCadastrosClick(Sender: TObject); begin ShowForm(TfrmCadastros); end; procedure TframMenu.mnuConsultasClick(Sender: TObject); begin ShowForm(TfrmConsultas); end; procedure TframMenu.mnuRelatoriosClick(Sender: TObject); begin ShowForm(TfrmRelatorios); end;
7
•
Para a opção Sair do Menu, use o codigo abaixo no evento onClick: procedure TframMenu.mnuSairClick(Sender: TObject); begin WebApplication.Terminate('Obrigado por usar esse programa'); end;
•
Neste momento, salve todo seu código e experimente rodar seu projeto. Se tudo estiver correto, o projeto será executado sem erros e a tela do servidor do Intraweb ap arecerá:
Pressione F9 nessa tela e o Browser será acionado. No momento ainda não acontecerá nada porque não linkamos o menu. Isso é só pra testar se o projeto está isento de erros. Feche a aplicação e volte ao Delphi. 6o. passo: Configurar a apresentação do menu nos formularios Uma vez configurado o menu principal, é hora de realizar seu link com os diversos formularios da aplicação. Faça o seguinte. •
Vá para o formulário Principal, e na paleta Standard do Delphi arraste um objeto TFrame para a área do formulário. Na tela que surgirá, escolha o framMenu, conforme a tela aba ixo:
8
•
Após colocar o Frame no form, dê um enter e configure sua propriedade Align para alTop.
•
Para testar, pressione F9 e execute a aplicação, você terá algo similar a tela abaixo:
Veja que o menu já está sendo apresentando para o formulário principal da aplicação. Repita os mesmos procedimentos para adicionar os menus nos demais formularios (frmCadastros, frmConsultas e frmRelatorios) •
Para testar o funcionamento, coloque alguns componentes em cada form e execute a aplicação. Veja que agora os forms serão chaveados automaticamente conforme a opção escolhida no menu.
9
Configurações Extras
Em certos momentos há a necessidade de se modificar alguns parametros do Frame ou do Menu ao inicializar a aplicação. Tal como configurar cores, alterar fontes, etc. O TFrame do Delphi não possui o evento onCreate, o que dificulta bastante a automação desses recursos. A melhor forma então de se fazer isso é sobrescrever o evento onCreate do Frame e adicionar ai as configurações desejadas. Veja como fazer isso: 1. Abra a unit do framMenu e na seção Public escreva; public { Public declarations } constructor Create(AOwner: TComponent); override; end; Pressione as construtor.
teclas
CTRL+SHIFT+C
para
o
Delphi
definir
o
protótipo
do
método
2. Escreva então o seguinte código: constructor TframMenu.Create(AOwner: TComponent); begin inherited; With IWMenu1 do Begin MainMenuStyle.MenuItemFont.FontFamily MainMenuStyle.SelectedMenuItemFont.FontFamily MainMenuStyle.DisabledMenuItemFont.FontFamily SubMenuStyle.MenuItemFont.FontFamily SubMenuStyle.SelectedMenuItemFont.FontFamily SubMenuStyle.DisabledMenuItemFont.FontFamily End;
:= := := := := :=
'Verdana, Helvetica, Sans-Serif'; MainMenuStyle.MenuItemFont.FontFamily; MainMenuStyle.MenuItemFont.FontFamily; MainMenuStyle.MenuItemFont.FontFamily; SubMenuStyle.MenuItemFont.FontFamily; SubMenuStyle.MenuItemFont.FontFamily;
IWFrameRegion.Align := alClient; IWFrameRegion.ClipRegion := False; IWFrameRegion.HorzScrollBar.Visible := False; IWFrameRegion.VertScrollBar.Visible := False; IWMenu1.Align := alTop; IWMenu1.TimeOut := 1000; end;
O código apresentado serve para inicializar a aparência do menu principal.
Por Adenilton Rodrigues
[email protected] Belo Horizonte – MG 2005
10