Sei sulla pagina 1di 11

TRABALHANDO COM ACTIONS NO DELPHI 7

Manoel Campos da Silva Filho Professor da Escola Tcnica Federal de Palmas TO Analista de Sistemas Desenvolvedor Delphi

NDICE
Trabalhando com ActionList...................................................................................................................3 A Evoluo do ActionList - Os Componentes ActionManager, ControlBar, ActionToolBar, ActionMainMenuBar e CustomizeDlg.....................................................................................................6 Introduo............................................................................................................................................6 O ActionManager.................................................................................................................................6 O ControlBar........................................................................................................................................6 ActionToolBar......................................................................................................................................6 ActionMainMenuBar............................................................................................................................6 CustomizeDlg......................................................................................................................................7 Criando a aplicao.............................................................................................................................7 Convertendo um ActionList para um ActionManager sem perdas de configurao nem cdigo........11

Pgina 2 de 11

Trabalhando com ActionList


No Delphi 5 surgiu o componente ActionList que utilizado para centralizao de cdigo e aparncia utilizados em barras de ferramentas e menus. Por exemplo, se voc tem um menu e uma barra de ferramentas no seu programa e, existe um item de menu e um boto na barra de ferramentas que fazem a mesma tarefa, ento, o ideal que estes dois itens distintos tenham os mesmos ttulos, hints, estados (enabled, visible), cones e cdigo utiliza-se o componente ActionList. Este componente tem a finalidade de centralizar estas configuraes para que o programador no tenha trabalho dobrado quando for definir estas configuraes para os itens de menu e os botes das barras de ferramentas. O principal problema de no se utilizar um ActionList a questo da duplicao de cdigo pois, voc tem que fazer um cdigo para o item de menu e um cdigo para o boto da barra de ferramentas. O componente ActionList encontra-se na paleta Standard do Delphi (a partir do delphi 5). Coloque um componente deste no formulrio e um MainMenu (da mesma paleta). Para exemplificar, vamos criar um item de menu, dentro de um menu Ferramentas, para mostrar a data atual do computador. Para isto, ao invs de comear criando o menu, vamos comear criando uma ao na ActionList. Aes so objetos que sero utilizados para ligar ao item de menu e ao boto na barra de ferramentas. Para criar a nossa primeira Action (ao), d um duplo clique sobre o componente ActionList. Na janela que aparece que nos vamos gerenciar nossas Actions (criar, alterar e excluir).

Clique no primeiro boto no canto superior esquerdo da janela para criar um nova Action. No Object Inspector sero apresentadas as propriedades da Action que voc acabou de criar. A Action tem as propriedades bsicas que so comuns a componentes como itens de menu e botes. Assim, vamos configurar essas propriedades. Informe os seguintes valores para as propriedades de acordo com a listagem abaixo: Caption = Obter Data Atual Hint = Obtm a Data Atual do Computador Category = Ferramentas Name = ActObterData ShortCut = CTRL+D A maioria das propriedades da Action so bastante conhecidas. Uma propriedade diferente que ela tem a Category. Esta propriedade pode receber qualquer valor (at mesmo com espao e acento) para indicar a categoria da Action, simplesmente por uma questo de organizao. Pgina 3 de 11

Toda Action deve ter um cdigo associado a ela (seno ela seria uma Action sem utilidade). Neste caso, a nossa action dever mostrar a data do computador. Para associar o cdigo para esta finalidade action, deve-se clicar duas vezes sobre ela para abrir o evento OnExecute da Action.

Este evento que o responsvel pela execuo do cdigo associado Action.

Agora, no editor de cdigo, digite: ShowMessage(Data Atual: + FormatDateTime(dd/mm/yyyy,Date)); Pronto, a nossa Action est functional agora. Mas, no h nenhum menu nem barra de ferramentas, como fazer pra que o cdigo seja executado. Ento, voc deve criar um menu com o caption igual a Ferramentas e incluir nele um item de menu. S que voc no vai configurar nada neste item de menu, vai apenas escolher na propriedade Action, o nome da action que ns criamos (ActObterData), assim o item de menu ser configurado de acordo com as definies da Action que foi criada e, quando o usurio clicar no menu, o cdigo do evento OnExecute da Action disparado. Agora, se voc mudar algum aspecto visual da Action, estas modificaes so refletidas nos itens ligados Action.

Pgina 4 de 11

Agora, coloque uma ToolBar no form (paleta Win32). Para incluir um boto na barra de ferramentas, basta clicar com o boto direito do mouse e escolher a opo New Button no menu que aparece. Para que este boto tenha as mesmas caractersticas e funcionalidades do item de menu criado anteriormente, basta escolher AtObterData na propriedade Action, como foi feito com o item de menu. Assim, o cdigo fica centralizado na Action, no havendo duplicao. Quando voc mudar o cdigo do evento OnExecute da Action, os objetos ligados ela utilizaro o mesmo cdigo atualizado. Para mostrar como alteraes numa Action so refletidas nos objetos ligados ela, vamos colocar uma figura na nossa action para dar um melhor visual aplicao. Para isso nos vamos precisar do componente ImageList (paleta win32). Coloque um ImageList no form e d dois cliques nele. Na janela que abrir, selecione uma imagem pequena (clicando no boto Add) para colocar na nossa action. Na pasta C:\Arquivos de programas\Arquivos comuns\Borland Shared\Images\Buttons voc vai encontrar vrios bitmaps pequenos que podem ser utilizados. Aps selecionar uma figura, clique em OK para fechar a janela do ImageList. O ImageList um repositrio de figuras que sero utilizadas no projeto, assim, todas as figuras que voc precisar para as suas Actions devem estar dentro de um ImageList. Par que as Actions possam utilizar as figuras contidas no ImageList voc deve ligar este ao ActionList atravs da propriedade Images.

Voc deve fazer o mesmo para o MainMenu e para o ToolBar, lig-los ao ImageList atravs da propriedade Images. Agora d dois cliques no ActionList e selecione a Action que ns criamos. Para que a action criado tenha um desenho associado ela, abra a propriedade ImageIndex da Action e escolha, dentre as imagens que aparecerem, qual a que voc deseja que seja associada Action. Pronto, agora voc pode ver que o boto na barra de ferramentas e o item de menu assumiram automaticamente o desenho associado action que est ligada neles.

Pgina 5 de 11

A Evoluo do ActionList - Os Componentes ActionManager, ControlBar, ActionToolBar, ActionMainMenuBar e CustomizeDlg

Introduo
Com a utilizao do componente ActionList o desenvolvedor agora capaz de criar aplicaes com uma apresentao melhor e cdigo mais organizado possuindo menus com Hints e cones que deixam o aplicativo mais atraente e fcil de utilizar possuindo menus e barras de ferramentas para agilizar as operaes. Com a chegada do delphi 7, surgiu uma avalanche de componentes que adicionaram diversos recursos para a criao de interfaces com menus e barras de ferramentas bem mais elaboradas que tenham a aparncia e funcionalidades iguais as de aplicativos como os do pacote Microsoft Office (Word, Excel, etc). Esses componentes so o ActionManager (que substitui as funcionalidades do ActionList), o ActionToolBar, o ActionMainMenuBar e o CustomizeDlg (que pra mim, o mais fantstico de todos). O ControlBar j existia nas verses anteriores ao Delphi 7. Mas vamos s apresentaes.

O ActionManager

Este componente substitui o ActionList possuindo mais recursos. Como o nome j sugere, ele um Gerenciador de Aes (Action Manager). Ele o responsvel por centralizar as Actions criadas pelo desenvolvedor para serem utilizadas em menus, barras de ferramentas e outros componentes que o desenvolvedor desejar.

O ControlBar
Este componente utilizado como um container para guardar as barras de ferramentas e at uma barra de menu. S que esta barra de menu um barra especial que ser vista mais adiante. O ControlBar possibilita que o usurio movimente a barra de menu e as barras de ferramentas para a posio que ele desejar (assim como nos aplicativos do Microsoft Office).

ActionToolBar
Este componente tambm vem substituir algum outro. Ele substitui o ToolBar, como j devem ter imaginado. Com o ActionToolBar fica muito mais fcil criar as barras de ferramentas do seu aplicativo do que com o antigo ToolBar.

ActionMainMenuBar
Pgina 6 de 11

Este componente tambm vai substituir outro. Mas alguns cticos podem j ter pensado, mas no querem acreditar. Mas isto mesmo, ele vem substituir o MainMenu, aquele componente nosso de cada dia. Atravs do ActionMainMenuBar que poderemos colocar o menu da nossa aplicao dentro do ControlBar para que o usurio possa movimentar a barra de menu da mesma forma que movimenta as barras de ferramentas.

CustomizeDlg
O ltima do batalho de componentes o CustomizeDlg. Este o mais especial, no meu ponto de vista, pois com ele que o usurio da sua aplicao poder configurar o menu e as barras de ferramentas da maneira que ele preferir, colocando ou retirando menus, itens de menu, barras de ferramentas e botes das barras de ferramentas. E o melhor de tudo, a aplicao ter a capacidade de salvar as configuraes do usurio em um arquivo sem que voc tenha que digitar uma linha de cdigo.

Criando a aplicao
Ento vamos ao Delphi. Coloque um componente ControlBar, um ImageList (paleta Win32), um ActionManager e um CustomizeDlg no form. Adicione um ActionToolBar, ActionMainMenuBar (este ltimos da paleta Additional) dentro do ControlBar. Mude a propriedade AutoSize do ControlBar para True e Align para alTop. O form deve ficar parecido com a figura abaixo:

O ImageList utilizado para armazenar as imagens que sero utilizadas nas Actions que sero criadas. Agora vamos ao relacionamento entre os componentes. Voc deve ligar o ImageList ao ActionManager atravs da propriedade Images do segundo, pois as imagens do ImageList sero utilizadas pelas Actions do ActionManager. O componente CustomizeDlg deve ser ligado ao ActionManager atravs da sua propriedade ActionManager do primeiro. Faa o mesmo processo para os componentes ActionToolBar e ActionMainMenuBar. Agora ns vamos para a criao das Actions dentro do ActionManager. Para isto, d um clique duplo sobre o ActionManager. Na tela que aparecer, selecione a aba Actions.

Pgina 7 de 11

Para criar actions, faa da mesma forma que na antiga ActionList. Vamos criar uma action para fechar o formulrio. Clique no primeiro boto no canto superior esquerdo da janela. No Object Inspector aparecero as propriedades da action recm criada. Vamos alterar estas propriedades: Caption = &Fechar Hint = Fechar o programa Category = Arquivo Name = ActFechar Enabled = True Para adicionar uma funcionalidade a esta Action, clique duas vezes sobre o seu nome, do lado direito da janela do ActionManager, para abrir o editor de cdigo.

Digite a linha de cdigo acima no seu programa. Agora voc j tem a primeira Action configurada e funcionando no seu programa. Agora temos que ter um controle visual para que o usurio possa acionar essa Action. Pra isso no utilizaremos mais o componente MainMenu e nem o ToolBar e sim o ActionMainMenuBar e o ActionToolBar que vai facilitar bastante o processo dando um visual muito melhor e mais funcionalidade aplicao. Para criar os controles visuais, d um clique duplo no ActionManager. Como voc j colocou o ActionToolBar e o ActionMainMenuBar dentro do ControlBar, agora s escolher as Actions que deseja colocar no menu e na barra de ferramentas. Assim, na janela que mostra as actions do ActionList voc deve selecionar a Action que deseja colocar no Pgina 8 de 11

menu e/ou na barra de ferramentas. Como s temos um Action, vamos selecionar esta para colocar na barra de ferramentas. Ento, clique na Action e arraste para cima da ActionToolBar e solte. Ser ento criado um boto na sua barra de ferramentas. Para adicionar um menu com seus itens de menu no ActionMainMenuBar basta clicar numa categoria do ActionManager, neste caso a categoria Arquivo, e arrastar para cima do ActionMainMenuBar e soltar. Assim so criados automaticamente um menu Arquivo com um sub-menu Fechar. Quando voc criar mais actions e colocar mais botes na barra de ferramentas, ser criado automaticamente um botozinho do lado direito da barra de ferramentas para adicionar ou remover botes facilmente. Veja a figura abaixo.

Mas e o componente CustomizeDlg? Calma, ele entra agora. Ele utilizado para permitir ao usurio configurar tanto a barra de ferramentas quanto o menu, colocando e removendo itens. Como voc j ligou o CustomizeDlg no ActionManager anteriormente, ento agora s criar o cdigo para abrir a janela de configurao das barras de ferramentas e de menu. Para isso, coloque um PopupMenu no form (paleta Standard). D dois cliques no PopupMenu e crie um sub-menu com o ttulo Configurar Barra de Ferramentas. Como mostra a figura abaixo.

Quando o usurio clicar com o boto direito do mouse sobre a ControlBar, deve ser mostrado o menu popup. O item de menu deste popup abrir a janela de configurao das barras de ferramentas e de menu. Agora, d dois cliques no item de menu criado (na janela que foi aberta, como mostra a figura acima) para adicionar o cdigo do item de menu. Digite o cdigo mostrado abaixo no evento OnClick do item de menu: CustomizeDlg1.Show; Agora ligue o ControlBar na menu popup atravs da propriedade PopupMenu do primeiro.

Pgina 9 de 11

Quando o menu popup for acionado pelo usurio a janela mostrada abaixo ser mostrada.

Agora para remover um boto da barra de ferramentas, com esta janela aberta, basta clicar no boto da barra e arrastar para fora dela. Para incluir um boto na barra, escolha o boto desejado dentro da janela de configurao e arraste-o para a barra de ferramentas. Voc pode fazer o mesmo com os menus e itens dentro dos menus. Ento, se voc no quisesse exibir o menu Janela, bastaria clicar sobre ele na barra de menu e arrastar para fora. Ao final, basta fechar a janela de configurao. Da forma que o programa est, quando o usurio fech-lo, as configuraes que ele fez so perdidas. Quando ele abrir o programa novamente, o programa mostra a configurao original. Para salvar as configuraes do usurio mais simples do que voc tenha imaginado. Basta colocar na propriedade FileName do ActionManager um nome de arquivo (o caminho do arquivo deve existir) para que as configuraes das barras de ferramentas e menu sejam salvas nele e carregadas quando o programa for reaberto. O nome do arquivo pode ser o que voc desejar. A extenso do arquivo tambm no importa, voc pode colocar, por exemplo, a extenso .conf ou at deixar sem extenso. Voc pode perceber que a janela de configurao das barras de ferramentas e menu est em ingls. Voc pode traduzir esta janela. Procure na pasta C:\Arquivos de programas\Borland\Delphi7\Source\Vcl (caso voc tenha instalado o delphi na pasta padro) pelos arquivos CustomizeDlg.pas e CustomizeDlg.dfm. Abra o CustomizeDlg.pas no delphi e altere os textos da janela para o que voc desejar. Depois copie os dois arquivos para C:\Arquivos de programas\Borland\Delphi7\Lib. Agora s ir no menu Project do Delphi e dar um Build em sua aplicao para que o form seja traduzido.

Pgina 10 de 11

Convertendo um ActionList para um ActionManager sem perdas de configurao nem cdigo

Se voc tem um projeto utilizando ActionList e agora quer por tudo migrar para os componentes ActionManager mas no quer reconfigurar as Actions e cdigo tudo novamente ento a soluo muito simples. No form que contm a ActionList pressione ALT + F12 para visualizar o arquivo DFM da unit. Procure dentro deste arquivo a sua ActionList (que deve ter o nome de ActionList1). Quando voc encontrar uma linha semelhante a mostrada abaixo object ActionList1: TActionList Altere para object ActionList1: TActionManager Pressione ALT + F12 novamente para voltar ao design do form. Salve a unit. Aparecer agora uma mensagem informando que o objeto ActionList1 do tipo TActionManager mas est declarado como TActionList. A mensagem pede confirmao para corrigir o problema. Voc deve responder SIM. Pronto, agora voc tem uma ActionManager no seu form sem perder suas Actions. Basta agora colocar os outros objetos para ligar na ActionManager e criar a sua barra de menu e de ferramentas personalizveis.

Pgina 11 de 11