15_-_capitulo11

download 15_-_capitulo11

of 21

Transcript of 15_-_capitulo11

  • 8/2/2019 15_-_capitulo11

    1/21

    Os menus e as barras de ferramentas fornecem aos usurios uma rota estruturada e acessvel paraalavancar os comandos e as ferramentas contidas em seus aplicativos. O planejamento e projetoadequados de menus e barras de ferramentas colocaro em evidncia a funcionalidade-chave de

    seus aplicativos garantindo a satisfao dos usurios que se utilizarem de seus aplicativos.Para obter informaes sobre como personalizar as barras de ferramentas do Visual FoxPro,consulte o captulo 3, Configurando o Visual FoxPro, no Guia de Instalao e ndice Principal.

    Este captulo aborda os seguintes tpicos:

    Utilizando menus em seus aplicativos

    Criando barras de ferramentas personalizadas

    Testando e depurando um sistema de menus

    Personalizando um sistema de menus

    Utilizando menus em seus aplicativos

    Os usurios freqentemente pesquisam menus antes de buscar informaes sobre seus aplicativosem outros lugares. Se os menus foram bem-projetados, os usurios podero compreender melhoros aplicativos desenvolvendo um modelo mental baseado apenas no contedo e na organizao dosmenus. Com o Criador de menus do Visual FoxPro, voc pode criar menus que melhoram aqualidade de seus aplicativos.

    Cada parte de um aplicativo do Visual FoxPro pode ter seu prprio sistema de menusou conjunto demenus. As sees a seguir descrevem como criar um sistema de menu, mas no explicam comoincorpor-lo ao aplicativo. Para obter informaes detalhadas sobre a adio de menus a umaplicativo, consulte o captulo 13, Compilando um aplicativo.

    As sees a seguir abordam os seguintes tpicos:

    Criando um sistema de menus

    Planejando um sistema de menus

    Criando menus, menus de atalho, itens de menus e submenus

    Atribuindo tarefas a um sistema de menus

    Criando um sistema de menusA maior parte do trabalho envolvido na criao de um sistema de menus realizado no Criador demenus, onde voc pode criar as opes de menu, submenus e os menus de fato.

    Criador de menus

  • 8/2/2019 15_-_capitulo11

    2/21

    A criao de um sistema de menus envolve vrias etapas. Independentemente do tamanho doaplicativo e das complexidades dos menus que planeja utilizar, voc deve:

    Planejar e criar o sistema.Determine que menus sero necessrios, onde eles devem aparecer na interface, quais delesnecessitam de submenus e assim por diante. Para obter maiores informaes sobre oplanejamento de sistemas de menus, consulte a seo Planejando um sistema de menus,posteriormente neste captulo.

    Criar os menus e submenus.

    Defina os ttulos, os itens e os submenus dos menus utilizando o Criador de menus.

    Atribuir tarefas ao sistema de modo que ele faa o que voc deseja.Especifique tarefas a serem executadas pelos menus, tais como exibio de formulrios e caixasde dilogos. Alm disso, inclua o cdigo de configuraoe o cdigo de limpezase for apropriado.O cdigo de configurao executado antes que o sistema de menus seja definido e pode incluirum cdigo para abertura de arquivos, declarar variveis ou colocar o sistema de menus em umapilha de modo que possa ser recuperado posteriormente. O cdigo de limpeza contm cdigo aser executado depois do cdigo de definio de menu e disponibilizando ou no os menus e ositens de menus para seleo.

    Gerar o programa de menus.

    Executar o programa para testar o sistema de menus.

    Planejando um sistema de menusA utilidade de um aplicativo pode depender da qualidade de seus sistemas de menus. Se investirtempo no planejamento de seus menus, os usurios iro aceit-los e conhec-los rapidamente.

    Ao criar o sistema de menus, considere as orientaes abaixo:

    Organize o sistema de acordo com as tarefas que os usurios iro executar e no de acordo com

    a hierarquia dos programas no aplicativo.Os usurios podem formar um modelo mental da forma como o aplicativo organizado atravs doexame dos menus e itens de menus. Para criar menus e itens de menus de forma eficaz, vocdeve saber como os usurios iro planejar e realizar seu trabalho.

    D a cada menu um ttulo significativo.

    Organize os itens de menus de acordo com a freqncia de uso esperada, seqncia lgica ou aordem alfabtica.Se voc no puder antever a freqncia e determinar a ordem lgica, organize os itens de menusem ordem alfabtica. A ordem alfabtica particularmente eficaz quando um menu contm maisde oito itens. Com muitos itens, o usurio gasta tempo para examin-los. Nesse caso, aclassificao por ordem alfabtica facilita o exame.

    Coloque linhas separadoras entre grupos lgicos de itens de menus.

    Limite o nmero de itens de um menu a uma tela. Se os itens no couberem todos em uma tela, crie submenus para itens de menus apropriados.

    Selecione as teclas de acesso e atalhos do teclado para os menus e itens de menus.Por exemplo, ALT+A poderia funcionar como uma tecla de acesso para um menu Arquivo.

    Utilize palavras que descrevam de modo claro os itens de menus.Utilize palavras comuns em vez de jarges da rea de informtica. Alm disso, use verbossimples e na voz ativa para indicar que as aes que iro resultar da escolha de cada item demenu. No use substantivos como verbos. Alm disso, descreva os itens de menus utilizandoconstrues paralelas. Por exemplo, se voc usar apenas uma palavra para todos os itens, utilizea mesma parte do discurso para todos eles.

    Use tanto letras maisculas como minsculas nos itens de menus.

  • 8/2/2019 15_-_capitulo11

    3/21

    Dica Para ver um bom exemplo de sistema de menus, execute o aplicativo Tasmanian Traders,TASTRADE.APP, que est no diretrio VFP\SAMPLES\TASTRADE.

    Criando menus, menus de atalho, itens de menus e submenusDepois de planejar o sistema de menus, voc pode cri-lo com o Criador de menus. possvelcriar menus, menus de atalho, itens de menus, submenus de itens de menus, linhas que separamgrupos de itens de menus relacionados etc. As sees a seguir fornecem maiores detalhes.

    Criando menus

    Voc pode criar menus personalizando o sistema de menus existente do Visual FoxPro oudesenvolvendo o seu prprio sistema de menus. Para iniciar o sistema de menus existente no VisualFoxPro, utilize o recurso Menu rpido.

    Para criar um sistema de menus com o Menu rpido

    1 No Gerenciador de projetos, selecione a guia Outros e, em seguida, selecione Menus e depois,

    clique em Novo.2 Selecione Menu.

    O Criador de menus ser exibido.

    3 No menu Menu, escolha Menu rpido.

    Agora o Criador de menus contm informaes sobre os menus principais do Visual FoxPro.

    Um sistema de menus criado com o recurso Menu rpido

    4 Personalize o sistema de menus adicionando ou alterando itens de menus.

    Por exemplo, insira um menu Cliente antes do menu Ajuda, escolhendo o boto dedeslocamento associado ao menu Ajuda, clicando no boto Inserir edepois digitando Cliente nacoluna Aviso. O resultado ser parecido com a tela a seguir:

    Um sistema de menus personalizado

  • 8/2/2019 15_-_capitulo11

    4/21

    Dica Arraste os botes de deslocamento para alterar a localizao dos menus na barra demenus.

    Se precisar do menu Ajuda, coloque-o como o ltimo menu na barra de menus para que osusurios possam encontr-lo rapidamente.

    Para usar o menu em um aplicativo, necessrio ger-lo.

    Para gerar um menu

    No menu Menu, escolha Gerar.O Visual FoxPro solicita o salvamento do sistema de menus em um arquivo com uma extenso.MNX. Esse arquivo uma tabela que armazenar todas as informaes sobre o sistema de menus.Depois que o sistema de menus for salvo, o Visual FoxPro solicitar um arquivo de sada com umaextenso .MPR. Esse arquivo conter o programa de menus gerado.

    Criando menus de atalho

    Os menus de atalho aparecem quando voc clica com o boto direito do mouse em um controle ouobjeto fornecendo uma maneira rpida de expor todas as funes que se aplicam apenas a esteobjeto. Voc pode utilizar o Visual FoxPro para criar menus de atalho e, em seguida, anexar essesmenus aos controles. Por exemplo, pode-se criar um menu de atalho que contenha os comandosRecortar, Copiar e Colar que aparecero quando um usurio clicar com o boto do mouse nosdados contidos em um controle Grid.

    Para criar um menu de atalho

    1 No Gerenciador de projetos, selecione a guia Outros, depois selecione Menus e, por ltimo,escolha Novo.

    2 Escolha Tecla de atalho .O Criador de tecla de atalho ser exibido.

    Uma vez que voc esteja no Criador do menu de atalho, o processo para adio de itens demenus ser igual ao processo de criao de menus.

    Para obter um exemplo de menus de atalho, execute SOLUTION.APP no diretrioSAMPLES\SOLUTION do Visual FoxPro.

    Criando menus SDI

    Os menus SDI so menus que aparecem em janelas de interface de um nico documento(SDI).Para criar um menu SDI, voc deve indicar que o menu ser usado em um formulrio SDI enquantovoc o estiver projetando. Seno, o processo de criao de um menu SDI ser igual ao processo de

  • 8/2/2019 15_-_capitulo11

    5/21

    criao de um menu normal.

    Para criar um menu SDI

    Enquanto o Criador de menus estiver aberto, escolha Opes gerais no menu Exibir eselecione Formulrio de nvel superior

    Criando itens de menus

    Depois de criar os menus, voc pode colocar itens de menus neles. Os itens de menus podemrepresentar comandos ou procedimentos do Visual FoxPro que voc deseja que o usurio execute,ou itens de menus que contenham submenus que ofeream itens de menus adicionais.

    Para adicionar itens de menus a um menu

    1 Na coluna Aviso, selecione o ttulo do menu ao qual voc deseja adicionar itens de menus.

    2 Na caixa Resultado, selecione Submenu.

    O boto Criar ser exibido direita da lista.

    3 Escolha o boto Criar.Aparece uma janela de criao vazia. Nessa janela, voc fornecer os itens de menus.

    4 Na coluna Aviso, digite os nomes dos novos itens de menus.

    Criando submenus

    Para cada item de menu, voc pode criar um submenu que contenha outros itens de menus.

    Para criar um submenu

    1 Na coluna Aviso, selecione o item de menu ao qual voc deseja adicionar um submenu.

    2 Na caixa Resultado, selecione Submenu.

    O boto Criar aparecer direita da lista. Se j existir algum submenu, o boto Editar serexibido em seu lugar.

    3 Selecione Criar ou Editar.

    4 Na coluna Aviso, digite os nomes dos novos itens de menus.

    Adicionando menus por programao

    Embora geralmente voc crie menus e itens de menus usando o Criador de menus, possvel,tambm, cri-los utilizando os comandos do Visual FoxPro. Por exemplo, voc pode criar um menuutilizando DEFINE PAD, um submenu usando DEFINE POPUP e itens no submenu usando umasrie de comandos DEFINE BAR.

    Agrupando itens de menus

    Para tornar legvel, separe grupos de itens de menus semelhantes por linhas divisrias. Por

    exemplo, no Visual FoxPro, o menu Editar apresenta uma linha separando os comandos Desfazer eRefazer dos comandos Recortar, Copiar, Colar e Colar Especial.

    Itens de menus agrupados

  • 8/2/2019 15_-_capitulo11

    6/21

    Para agrupar itens de menus

    1 Na coluna Aviso, digite\-. Esse procedimento cria uma linha divisria.

    2 Arraste o boto para a esquerda do prompt\- para mover a linha divisria at que ela aparea nolocal desejado.

    Incluindo menus em um aplicativoUma vez criado um sistema de menus, voc pode inclu-lo em seu aplicativo.

    Para incluir um sistema de menus em seu aplicativo

    Adicione o arquivo de extenso .MNX ao projeto e, em seguida, construa o aplicativo a partir doprojeto. Para obter maiores informaes sobre como construir seu aplicativo, consulte o captulo13, Compilando um aplicativo.

    Anexando menus de atalho a controles

    Uma vez criado e gerado um menu de atalho, voc pode anex-lo a um controle. Geralmente, osmenus de atalho so exibidos quando um usurio clica em um controle com o boto direito domouse. possvel anexar um menu de atalho a um determinado controle inserindo algumas linhasde cdigo no evento Right Click do controle.

    1 Selecione o controle ao qual voc deseja anexar o menu de atalho.

    2 Na janela Propriedades, escolha a guia Mtodos e selecione Right Click Event.

    3 Na janela de cdigo, digite DOmenu.MPR, onde menu o nome do menu de atalho.

    Observao Certifique-se de usar a extenso .MPR ao fazer referncia a menus de atalho.

    Anexando menus SDI a formulrios

    Uma vez criado um menu SDI, voc pode anex-lo a um formulrio SDI. Alm disso, voc deve:

    Definir a propriedade ShowWindow do formulrio. Adicionar uma instruo DO ao evento Init do formulrio.

    Para anexar um menu SDI a um formulrio

    1 No Criador de formulrios, defina a propriedade ShowWindow do formulrio como 2 As TopLevel Form.

    2 No evento Init do formulrio, chame o menu.Por exemplo, se o menu chamar SDIMENU.MPR, adicione este cdigo:DO SDIMENU.MPR WITH THIS,.T.

    Atribuindo tarefas a um sistema de menusAo criar um sistema de menus, voc deve considerar a facilidade de acesso ao sistema e deve

    atribuir tarefas ao sistema. Alm disso, deve fornecer tarefas a serem executadas pelos menus eitens de menus, tais como a exibio de formulrios,barras de ferramentas e outros sistemas demenus. Deve definir teclas de acesso para permitir a entrada no sistema de menus. Pode, tambm,adicionar atalhos de teclado e ativar ou desativar os itens de menus para um maior controle.

    Atribuindo teclas de acesso

    Os menus bem-elaborados apresentam teclas de acessopara acesso rpido do teclado s funesdo menu. A tecla de acesso representada por uma letra sublinhada no ttulo ou item de menu. Porexemplo, o menu Arquivo do Visual FoxPro utiliza a letra A como tecla de acesso.

    Se voc no atribuir uma tecla de acesso a um ttulo ou item de menu, o Visual FoxPro designarautomaticamente a primeira letra como a tecla de acesso. Por exemplo, o menu Cliente criadoanteriormente no tinha uma tecla de acesso definida. Dessa forma, o Visual FoxPro atribuiu a

  • 8/2/2019 15_-_capitulo11

    7/21

    primeira letra (C) como a tecla de acesso.

    Menus com teclas de acesso

    Para especificar a tecla de acesso para um menu ou item de menu

    Digite\< esquerda da letra que voc quer que seja a tecla de acesso.

    Por exemplo, para definir a tecla de acesso como t no ttulo de menu Cliente, substitua Cliente porClien\

  • 8/2/2019 15_-_capitulo11

    8/21

    4 Na caixa Saltar para, digite a expresso que determina se o menu ou item de menu est ativadoou desativado.Se a expresso for falsa (.F.), o menu ou item de menu estar ativado. Se a expresso forverdadeira (.T.), o menu ou item de menu estar desativado e no poder ser selecionado. Paraobter informaes detalhadas, consulte os tpicos DEFINE BAR e DEFINE PAD.

    Observao Depois que o sistema de menus for exibido, voc poder ativar e desativar menus e

    itens de menus utilizando o comando SET SKIP OF..Marcando o estado de um item de menu

    Em um menu, uma marca de verificao ao lado de um item de menu indica que ele est ativado.Por exemplo, se voc colocar uma marca de verificao ao lado do item Crdito no menu Clientecriado anteriormente, Crdito est em vigor.

    Em tempo de execuo, voc pode colocar uma marca de verificao ao lado de um item de menuutilizando o comando SET MARK OF.

    Para obter um exemplo de como desativar e marcar o estado de itens de menus, executeSOLUTION.APP no diretrio SAMPLES\SOLUTION do Visual FoxPro.

    Atribuindo tarefas a menus ou itens de menus

    Quando um menu ou item de menu for selecionado, ele executar uma tarefa, tal como a exibiode um formulrio, uma barra de ferramentas, ou outro sistema de menus. Para executar uma tarefa,um menu ou item de menu deve executar um comando do Visual FoxPro. O comando pode estarcontido em uma linha ou pode ser uma chamada de procedimento.

    Dica Se voc pretende utilizar um conjunto de comando em vrios lugares, escreva umprocedimento. O procedimento deve ser definido e escrito de forma explcita no cdigo de limpezado menu ou em um outro local onde possa ser referenciado por qualquer menu ou objeto.

    Executando tarefas com comandos

    Para executar uma tarefa, voc pode atribuir um comando a um menu ou item de menu . Umcomando pode ser qualquer comando vlido do Visual FoxPro, incluindo uma chamada para um

  • 8/2/2019 15_-_capitulo11

    9/21

    programa que existe no seu caminho ou um procedimento definido na opo Limpar da caixa dedilogo Opes gerais. Para obter maiores informaes, consulte Criando um procedimento padropara um sistema de Menus posteriormente neste captulo.

    Para atribuir um comando a um menu ou item de menu1 Na coluna Aviso, selecione o ttulo ou item de menu apropriado.

    2 Na caixa Resultado, selecione Comando.

    3 Na caixa direita da caixa Resultado, digite o comando apropriado:

    Atribuindo um comando a um menu

    Se o comando chamar um procedimento no cdigo de limpeza do menu, use o comando DO com asintaxe a seguir:

    DO nomeprocIN nomemenuNesta sintaxe, nomemenuespecifica a localizao do procedimento. Este o nome do arquivo demenu e deve ter a extenso .MPR. Se voc no especificar a localizao em nomemenu, deverespecific-la com SET PROCEDURE TO nomemenu.MPR, se o procedimento estiver no cdigo delimpeza do menu.

    Exibindo formulrios e caixas de dilogos

    Em um menu ou item de menu, voc pode exibir uma caixa de dilogo ou um formulrio compiladochamando-os com um comando ou procedimento. Por exemplo, para exibir um formulrio

    denominado Orders, utilize o comando abaixo:DO FORM Orders

    Dica Quando voc criar um menu ou item de menu que exiba um formulrio ou caixa de dilogo,coloque reticncias no final do aviso para indicar que so necessrias outras entradas do usurio.

    Reticncias aps um item de menu indicam que so necessrias outras entradas do usurio.

    Exibindo barras de ferramentas

    Se voc criar um barra de ferramentas personalizada para um aplicativo, pode exibi-la chamando-apartir de um menu ou item de menu. Para obter informaes detalhadas, consulte Criando barras deferramentas personalizadas posteriormente neste captulo.

    Executando tarefas com procedimentos

    Voc pode atribuir um procedimento a um menu ou item de menu. O modo utilizado para atribuir umprocedimento depende da presena de submenus nos menus ou itens de menus.

    Para atribuir um procedimento a um menu ou item de menu sem submenus

    1 Na coluna Aviso, selecione o ttulo ou item de menu apropriado.

    2 Na caixa Resultado, selecione Procedimento.

    Um boto Criar exibido direita da lista. Se um procedimento tiver sido definido anteriormente,

  • 8/2/2019 15_-_capitulo11

    10/21

    ser exibido um boto Editar em seu lugar

    3 Selecione Criar ou Editar.

    Atribuindo um procedimento a um menu com submenus

    4 Digite o cdigo apropriado na janela.

    Observao No necessrio digitar o comando PROCEDURE na janela de edio deprocedimento, pois o Visual FoxPro gera esse comando para voc. O nico local em que vocprecisa digitar a instruo PROCEDURE no cdigo de limpeza.

    Para atribuir um procedimento a um menu ou item de menu com submenus

    1 Na caixa Nvel do menu, selecione o nvel que inclui o menu ou item de menu apropriado.

    2 No menu Exibir, escolha Opes de menu.

    O Visual FoxPro exibe a caixa de dilogo Opes de menu.

    Atribuindo um procedimento a um menu com submenus

    3 Atribua o procedimento escolhendo uma dos mtodos abaixo:

    Escreva ou chame um procedimento na caixa Procedimento. Ou

    Escolha Editar e, em seguida, OK para abrir uma janela de edio separada e escrever ouchamar um procedimento.

    Adicionando o cdigo de configurao a um sistema de menus

    Voc pode personalizar um sistema de menus adicionando a ele um cdigo de configurao. O

  • 8/2/2019 15_-_capitulo11

    11/21

    cdigo de configurao pode incluir um cdigo para criar o ambiente, definir as variveis, abrir osarquivos necessrios e salvar ou restaurar os sistemas de menus com os comandos PUSH MENU ePOP MENU.

    Para adicionar o cdigo de configurao a um sistema de menus1 No menu Exibir, selecione Opes gerais.

    2 Na rea Cdigo do menu, selecione Configurar e, em seguida, escolha OK.

    3 Na janela do cdigo de configurao, digite o cdigo de configurao apropriado.

    As suas alteraes sero salvas quando voc fechar o Criador de menus.

    Adicionando o cdigo de limpeza a um sistema de menus

    Voc pode adaptar o sistema de menus adicionando a ele o cdigo de limpeza. O cdigo de limpezageralmente contm o cdigo que ativa ou desativa inicialmente menus e itens de menus. Quandovoc gera e executa o programa de menus, o cdigo de configurao e o cdigo de definio demenu so processados antes do cdigo de limpeza.

    Para adicionar o cdigo de limpeza a um sistema de menus1 No menu Exibir, escolha Opes gerais.

    2 Na rea Cdigo do menu, selecione Limpar e, em seguida, escolha OK.

    3 Na janela do cdigo de limpeza, digite o cdigo de limpeza apropriado.

    As suas alteraes sero salvas quando voc fechar o Criador de menus.

    Dica Se o seu menu o programa principal de um aplicativo, inclua um comando READ EVENTSno cdigo de limpeza e atribua um comando CLEAR EVENTS ao comando de menu usado para sairdo sistema de menus. Esse procedimento impede que seus aplicativos em tempo de execuosejam terminados prematuramente.

    Controlando menus em tempo de execuo

    Cada menu do Visual FoxPro tem dois nomes e cada item de menu tem um nome e um nmero. OVisual FoxPro utiliza um nome na interface do usurio e outro nome ou nmero no programa demenus gerado (.MPR). Voc pode utilizar esses nomes ou nmeros para fazer referncia a controlarmenus e itens de menu ou controlar menus e itens de menus em tempo de execuo. Se voc nofornecer um nome ou nmero ao criar menus e itens de menus, o Visual FoxPro criar um quandovoc gerar o programa de menus.

    Para obter um exemplo de adio e remoo de itens de menus em tempo de execuo, consulteSOLUTION.APP no diretrio SAMPLES\SOLUTION do Visual FoxPro.

    Importante Evite utilizar nomes e nmeros gerados pelo Visual FoxPro em cdigo, porque elespodem ser alterados cada vez que voc gera o programa de menus. Se voc fizer referncia a umnome ou nmero gerado, o seu cdigo poder falhar.

    No Criador de menus, a coluna Aviso mostra o que aparece na interface do usurio e a coluna direita da caixa Resultado mostra o que aparece no programa gerado.

    Utilizando Nome do ttulo de menu para fazer referncia a um nome do ttulo de menu noprograma de menus gerado

  • 8/2/2019 15_-_capitulo11

    12/21

    Usando Barra n para fazer referncia a um item de menu no programa de menus gerado

    Para especificar um nome para um ttulo de menu

    1 Na coluna Aviso, selecione o ttulo de menu apropriado.

    Observao A coluna Resultado deve mostrar Comando, Submenu, ou Procedimento eno Nome do ttulo de menu.

    2 Escolha o boto na coluna Opes para exibir a caixa de dilogo Opes de aviso.

    3 Na caixa Nome do ttulo de menu, digite no nome do ttulo do menu de sua escolha.

    4 Escolha OK para retornar ao Criador de menus.Para especificar um nmero de barra para um item de menu

    1 Na coluna Aviso, selecione o item de menu apropriado.

    Observao A coluna Resultado deve mostrar Comando, Submenu ou Procedimento eno Barra N.

    2 Escolha o boto na coluna Opes para exibir a caixa de dilogo Opes de aviso.

    3 Na caixa Barra n, digite o nmero da barra de sua escolha.

    4 Escolha OK para retornar ao Criador de menus.

    Dica Se voc utilizar o recurso Menu rpido, no altere os nomes ou nmeros fornecidos peloVisual FoxPro para menus ou itens de menus do sistema; caso contrrio, voc poder obterresultados imprevisveis ao executar o programa de menus gerado.

    Criando barras de ferramentas personalizadasSe o seu aplicativo incluir tarefas repetitivas que os usurios executam com freqncia, voc poderadicionar barras de ferramentas personalizadas para simplificar ou agilizar as tarefas. Por exemplo,se os usurios costumam imprimir um relatrio escolhendo um comando de menu, voc podersimplificar a tarefa fornecendo uma barra de ferramentas com um boto de impresso.

    As sees a seguir descrevem como criar barras de ferramentas personalizadas para seusaplicativos. Para obter informaes detalhadas sobre como personalizar as barras de ferramentasque acompanham o Visual FoxPro, consulte a Caixa de dilogo Personalizar barra de ferramentas.

    As sees a seguir abordam os seguintes tpicos:

    Definindo uma classe de barra de ferramentas

    Adicionando objetos a uma classe de barra de ferramentas personalizada

    Adicionando barras de ferramentas personalizadas a conjuntos de formulrios

    Definindo uma classe de barra de ferramentasSe voc desejar criar uma barra de ferramentas que contenha botes ainda no encontrados nasbarras de ferramentas existentes, poder executar esta ao definindo uma classe de barra deferramentas personalizada. O Visual FoxPro fornece uma classe principal de barra de ferramentas apartir da qual voc poder criar a classe que precisa.

    Aps definir uma classe de barra de ferramentas, voc poder adicionar objetos classe de barra deferramentas e, em seguida, definir propriedades, eventos e mtodos para a barra de ferramentas

  • 8/2/2019 15_-_capitulo11

    13/21

    personalizada. Por ltimo, poder adicionar a barra de ferramentas a um conjunto de formulrios.

    Para definir uma classe de barra de ferramentas personalizada

    1 No Gerenciador de projetos, selecione Classes e, em seguida, escolha Novo.2 Na caixa Nome da classe, digite o nome da classe.

    3 Na caixa Baseada em, selecione Toolbar para usar a classe principal Toolbar. Ou Escolha o boto de reticncias para escolher outra classe de barra de ferramentas.

    4 Na caixa Armazenar em, digite o nome da biblioteca na qual voc deseja salvar a nova classe. Ou Escolha o boto da caixa de dilogo para selecionar uma biblioteca existente.

    5 Adicione objetos nova classe de barra de ferramentas.Por exemplo, voc deve armazenar uma classe de impresso baseada na classe principal Barra deferramentas em uma biblioteca de inventrio.

    Criando uma nova classe na caixa de dilogo Nova classe

    Ao concluir a caixa de dilogo Nova classe, ser exibido o Criador de classes.

    Uma nova barra de ferramentas personalizada no Criador de classes

    Voc pode, tambm, definir uma classe de barra de ferramentas seguindo um dos procedimentos aseguir:

    Escolhendo Novo no menu Arquivo e, em seguida, escolhendo Classe.

    Usando o comando CREATE CLASS ou MODIFY CLASS.

    Definindo a classe por programao com o comando DEFINE CLASS.

  • 8/2/2019 15_-_capitulo11

    14/21

    Adicionando objetos a uma classe de barra de ferramentaspersonalizada

    Aps criar uma classe de barra de ferramentas personalizada, voc pode adicionar objetos a ela,incluindo qualquer objeto suportado pelo Visual FoxPro. Por exemplo, adicionar objetos provenientesda Barra de ferramentas controles.

    Para adicionar objetos classe de barra de ferramentas personalizada

    1 Abra a biblioteca de classes que contenha a classe de barra de ferramentas personalizada e, emseguida, abra a classe.

    2 Na Barra de ferramentas controles de formulrio, escolha um objeto que voc deseja adicionar.

    3 Coloque o objeto na barra de ferramentas personalizada, selecionando a barra de ferramentaspersonalizada.

    4 Repita as etapas 2 e 3 at que a barra de ferramentas personalizada esteja completa.

    5 Reorganize os objetos na barra de ferramentas personalizada, se adequado.

    Por exemplo, voc pode dimensionar objetos, mov-los arrastando-os, exclu-los pressionando atecla DELETE ou adicionar espaos extras entre eles inserindo objetos separadores originrios daBarra de ferramentas controles de formulrio.

    Observao Voc pode mover apenas um objeto de cada vez.

    6 Defina as propriedades da barra de ferramentas na janela Propriedades.

    7 Salve a classe de barra de ferramentas personalizada.

    Dica possvel adicionar um bitmap ou cone a um boto da barra de ferramentas definindo a suapropriedade Picture.

    Adicionando barras de ferramentas personalizadas a conjuntos deformulriosAps definir uma classe de barra de ferramentas, voc pode criar uma barra de ferramentas a partirdela. possvel coordenar barras de ferramentas e formulrios utilizando o Criador de formulriosou escrevendo cdigo.

    Coordenando barras de ferramentas e formulrios no Criador de formulrios

    Voc pode adicionar uma barra de ferramentas a um conjunto de formulrios de modo que a barrade ferramentas abra juntamente com os formulrios do conjunto de formulrios. Voc no podeadicionar a barra de ferramentas diretamente ao formulrio.

    Para adicionar uma barra de ferramentas a um conjunto de formulrios utilizando o Criador

    de formulrios1 Registre e selecione a biblioteca que contm a classe de barra de ferramentas.

    2 Abra o conjunto de formulrios com o qual voc deseja usar a classe de barra de ferramentas,escolha Exibir classes na Barra de ferramentas controles e, em seguida, selecione a classe debarra de ferramentas na lista exibida.

    3 Na Barra de ferramentas controles, escolha a classe de barra de ferramentas.

    4 Clique no Criador de formulrios para adicionar a barra de ferramentas e, em seguida, arraste abarra de ferramentas para o seu local apropriado.O Visual FoxPro adiciona a barra de ferramentas ao conjunto de formulrios. Se no houver um

  • 8/2/2019 15_-_capitulo11

    15/21

    conjunto de formulrios aberto, o Visual FoxPro solicitar a sua abertura.

    5 Defina as aes da barra de ferramentas e seus botes (consulte posteriormente neste captulo).

    Dica Para determinar a classe de um objeto, veja as Dicas sobre ferramentas na Barra de

    ferramentas controles de formulrio.Para obter maiores informaes sobre como registrar e selecionar a biblioteca que contm a classede barra de ferramentas, consulte Adicionando classes a formulrios, conjuntos de formulrios ebarras de ferramentas no captulo 3, Programao orientada a objetos.

    Coordenando barras de ferramentas e formulrios utilizando cdigo

    Alm de utilizar o Criador de formulrios, voc pode adicionar barras de ferramentas a conjuntosde formulrios utilizando cdigo.

    Para adicionar uma barra de ferramentas a um conjunto de formulrios usando cdigo

    No evento Init do conjunto de formulrios, utilize o comando SET CLASSLIB para especificar abiblioteca que contm a classe de barra de ferramentas e, em seguida, crie uma barra de

    ferramentas a partir dessa classe no conjunto de formulrios.Por exemplo, para adicionar e exibir a barra de ferramentas tbrPrint, que se baseia na classeprinting na biblioteca de classes inventory, adicione o cdigo a seguir ao evento Init doconjunto de formulrios:

    SET CLASSLIB TO inventory

    THIS.AddObject("tbrPrint","printing")

    tbrPrint.Show

    Observao Se a classe de barra de ferramentas no definir as aes da barra de ferramentas eseus botes, voc dever definir as aes no evento Procedures associados barra de ferramentase seus botes. Para obter maiores informaes, consulte Definindo aes da barra de ferramentasposteriormente neste captulo.

    Exemplo: Criando uma barra de ferramentas personalizada

    possvel definir todos os aspectos de uma barra de ferramentas em cdigo. Por exemplo, se vocadicionar o cdigo a seguir ao evento Init do conjunto de formulrios, quando o conjunto deformulrios for carregado, o Visual FoxPro criar e exibir a barra de ferramentas definida no cdigo.Essa barra de ferramentas contm dois botes.

    Barra de ferramentas com dois botes

    Quando escolhidos, esses botes alteram os atributos de fonte do formulrio frmForm1 no conjuntode formulrios.

    Cdigo do evento Init do conjunto de formulriosCdigo ComentriosTHIS.AddObject("tbrTool1","mytoolbar")

    THIS.tbrTool1.ShowAdiciona uma barra de ferramentas daclasse mytoolbar ao conjunto deformulrios atual e torna a barra deferramentas visvel. Esse cdigoencontra-se no evento Init do conjuntode formulrios.

    Cdigo de definio de classe

    Cdigo ComentriosDEFINE CLASS myToolBar AS TOOLBAR Incio da definio de classe: uma

  • 8/2/2019 15_-_capitulo11

    16/21

    ADD OBJECT cmdBold AS COMMANDBUTTON

    ADD OBJECT sep1 AS SEPARATOR

    ADD OBJECT cmdItalic AS COMMANDBUTTON

    barra de ferramentas com um botode comando, um separador e outroboto de comando.

    Left = 1

    Top = 1

    Width = 25

    Caption = "Atributos do Formulrio"

    Define as propriedades do objeto dabarra de ferramentas.

    cmdBold.Caption = "B"

    cmdBold.Height = 1.7

    cmdBold.Width = 10

    cmdItalic.Caption = "I"

    cmdItalic.Height = 1.7

    cmdItalic.Width = 10

    cmdItalic.FontBold = .F.

    Define as propriedades dos controles.Observe que no h definies daspropriedades Top ou Left para oscontroles em uma barra deferramentas. Os controles de umabarra de ferramentas soposicionados automaticamente naordem em que so adicionados.

    Como padro, a propriedade FontBoldde cmdItalic definida como falsa(.F.) pois FontBold verdadeira (.T.).

    PROCEDURE Activate

    THIS.cmdBold.FontBold = ;

    THISFORMSET.frmForm1.FontBold

    THIS.cmdItalic.FontItalic = ;

    THISFORMSET.frmForm1.FontItalic

    ENDPROC

    Quando a barra de ferramentas forativada, os atributos de fonte dos doisbotes de comando so definidospara refletir as definies de fonteNegrito e Itlico de frmForm1.

    PROCEDURE cmdBold.CLICK

    THISFORMSET.frmForm1.FontBold = ;

    !THISFORMSET.frmForm1.FontBold

    THIS.FontBold = ;

    THISFORMSET.frmForm1.FontBoldENDPROC

    Quando o usurio clica sobrecmdBold, a definio FontBold defrmForm1 invertida e a definioFontBold de cmdBold definida para

    coincidir com ela.PROCEDURE cmdItalic.CLICK

    THISFORMSET.frmForm1.FontItalic = ;

    !THISFORMSET.frmForm1.FontItalic

    THIS.FontItalic = ;

    THISFORMSET.frmForm1.FontItalic

    ENDPROC

    Quando o usurio clica emcmdItalic, a definio FontItalic defrmForm1 invertida e a definioFontItalic de cmdItalic definidapara coincidir com ela.

    ENDDEFINE Final da definio de classe.

    Definindo propriedades de barras de ferramentas personalizadas

    Ao criar uma barra de ferramentas personalizada, voc pode definir suas propriedades. Porexemplo, voc pode definir a propriedade Movable para permitir que o usurio mova a barra de

    ferramentas.Alm disso, voc pode utilizar mtodos e eventos para controlar barras de ferramentaspersonalizadas. Por exemplo, possvel utilizar o mtodo Dock para fixar ou fazer flutuar uma barrade ferramentas e, alm disso, possvel usar os eventos BeforeDock e AfterDock para controlar oque acontece antes e depois da fixao de uma barra de ferramentas.

    Definindo aes da barra de ferramentas

    Aps criar uma barra de ferramentas, voc deve definir as aes associadas barra de ferramentase aos seus objetos. Por exemplo, necessrio definir o que acontece quando o usurio clica nabarra de ferramentas ou sem um de seus botes.

    Para definir uma ao de barra de ferramentas

  • 8/2/2019 15_-_capitulo11

    17/21

    1 Selecione o objeto para o qual voc deseja definir uma ao: a barra de ferramentas ou um deseus botes.

    2 Najanela Propriedades, escolha a guia Mtodos.

    3 Edite o evento apropriado.4 Adicione o cdigo que especifica a ao.Alm disso, voc pode definir propriedades e mtodos da barra de ferramentas e seus objetos.

    Coordenando menus e barras de ferramentas personalizadas

    Se voc criar uma barra de ferramentas, necessrio sincronizar os comandos de menu com seusbotes de barra de ferramentas correspondentes. Por exemplo, se voc ativar um boto da barra deferramentas, dever ativar o seu comando de menu correspondente.

    Voc deve projetar e criar o seu aplicativo para:

    Executar as mesmas aes quando o usurio escolher os itens de menus e botes da barra deferramentas associada.

    Coordenar a ativao e desativao dos itens de menus e botes da barra de ferramentasassociados.

    Siga estas etapas gerais quando coordenar itens de menus e botes da barra de ferramentas:

    1 Crie uma barra de ferramentas definindo uma classe de barra de ferramentas, adicione botes decomando e inclua o cdigo operacional nos mtodos associados aos eventos Click dos botes decomando.

    2 Crie o menu coordenado.

    3 Adicione a barra de ferramentas e o menu coordenados a um conjunto de formulrios.

    Criando o menu coordenado

    Quando voc coordena um menu com uma barra de ferramentas, os itens de menus realizam asmesmas tarefas dos botes da barra de ferramentas associada e os itens do menu soautomaticamente desativados quando o boto da barra de ferramentas associada desativado.

    Para criar um menu que esteja coordenado com uma barra de ferramentas

    1 No Criador de menus, crie um submenu com um aviso descritivo para cada boto da barra deferramentas.

    2 Na coluna de resultados de cada item de submenu, escolha Comando.

    3 Para cada item de submenu, chame o cdigo associado ao evento Click do boto de comandoadequado da barra de ferramentas.Por exemplo, se o nome do boto da barra de ferramentas for cmdA, adicione a linha de cdigo aseguir na caixa de edio para o comando de item de submenu:Formset.toolbar.cmdA.Click

    4 Escolha o boto na coluna Opes para abrir a caixa de dilogo Opes de aviso e escolhaSaltar para.

    5 No Construtor de expresses, insira uma expresso que indique que a opo de menu deve serignorada quando o boto de comando da barra de ferramentas no for ativado.Por exemplo, se o nome do boto da barra de ferramentas for cmdA, insira a expresso a seguirna caixa Saltar para:NOT formset.toolbar.cmdA.Enabled

    6 Gere o menu.

    7 Adicione o menu ao conjunto de formulrios com a barra de ferramentas e execute o conjunto deformulrios.

    Quando o usurio abrir o menu, o Visual FoxPro avaliar a condio Saltar para, desativando o item

  • 8/2/2019 15_-_capitulo11

    18/21

    de menu se o boto de comando da barra de ferramentas associada estiver desativado. Quando ousurio escolher um item no menu, o cdigo no evento Click do boto de comando da barra deferramentas associada ser executado.

    Adicionando uma barra de ferramentas e menu coordenados a um conjunto deformulrios

    Aps criar uma classe de barra de ferramentas e um menu destinados a trabalhar em conjunto,torna-se fcil incorpor-los a um conjunto de formulrios.

    Para incorporar uma barra de ferramentas e menu coordenados a um conjunto deformulrios

    1 Adicione a barra de ferramentas ao conjunto de formulrios seguindo um dos trs procedimentos:

    Arraste a classe de barra de ferramentas do Gerenciador de projetos para o Criador deformulrios.

    Registre a biblioteca de classes da barra de ferramentas e adicione a barra de ferramentas ao

    conjunto de formulrios proveniente da Barra de ferramentas controles. No evento Init do conjunto de formulrios, inclua o cdigo com o mtodo AddObject para

    adicionar a barra de ferramentas.

    2 No evento Load do conjunto de formulrios, salve o menu existente e execute o seu programa demenu.Por exemplo, se o seu nome de menu for mymenu, inclua as linhas de cdigo a seguir usando oscomandos PUSH MENU e DO:PUSH MENU _MSYSMENU

    DO mymenu.mpr

    3 No evento Unload do conjunto de formulrios, restaure o menu original com o comando POPMENU:POP MENU _MSYSMENU

    Se alguns comandos de menu so mais utilizados do que outros, crie barras de ferramentaspersonalizadas que contenham botes para esses comandos. Em seguida, os usurios poderosimplesmente pressionar os botes sempre que precisarem dos comandos. No entanto, se voccriar uma barra de ferramentas, dever sincronizar os comandos de menu com seus respectivosbotes. Por exemplo, se ativar um boto, dever ativar seu comando de menu correspondente.

    Testando e depurando um sistema de menusVoc pode visualizar um sistema de menus medida que voc o cria ou pode test-lo e depur-lodepois de gerar o programa de menus.

    Para visualizar um sistema de menus medida que voc o cria

    No Criador de menus, escolha Visualizar.

    Ao clicar sobre Visualizar, o sistema de menus que voc definiu exibido na parte superior da tela.Alm disso, a caixa de dilogo Visualizar exibe o nome de arquivo (ou o nome temporrio doarquivo) do sistema de menus.

    Visualizando um sistema de menus

  • 8/2/2019 15_-_capitulo11

    19/21

    Se voc selecionar um ttulo ou item de menu, ele aparecer, tambm, na caixa de dilogoVisualizar juntamente com o comando a ele atribudo, caso exista algum.

    Para testar um sistema de menus

    1 No menu Menu, escolha Gerar.

    Se voc alterar o menu, o Visual FoxPro solicitar que voc salve as alteraes.2 Na caixa de dilogo Gerar menu, insira um nome para o programa de menus gerado digitando-o

    na caixa de dilogo Arquivo de sada ou selecionando o boto da caixa de dilogo.

    3 Escolha Gerar para produzir um arquivo de programa de menus com uma extenso .MPR.

    4 No menu Programa, escolha Executar para que o programa seja executado.

    Importante Se voc modificar o programa de menus gerado (arquivo .MPR), perder as alteraesquando modificar o menu utilizando o Criador de menus e, depois, gerar novamente o programa demenus.

    Se o programa de menus no funcionar como pretendido, utilize as ferramentas de diagnsticofornecidas juntamente com o Visual FoxPro. Para obter maiores informaes, consulte o captulo 14,Testando e depurando aplicativos .

    Personalizando um sistema de menusDepois de criar um sistema de menus bsico, voc pode personaliz-lo. Por exemplo, criandomensagens na barra de status, definindo localizaes de menu ou definindo procedimentos padro.

    Exibindo as mensagens da barra de statusQuando um menu ou item de menu for selecionado, voc poder exibir uma mensagem na barra destatus descrevendo a escolha. Tal mensagem ajuda o usurio acrescentando informaes sobre asopes do menu.

    Para exibir uma mensagem quando um menu ou item de menu selecionado

  • 8/2/2019 15_-_capitulo11

    20/21

    1 Na coluna Aviso, selecione o ttulo ou item de menu apropriado.

    2 Selecione o boto na coluna Opes para exibir a caixa de dilogo Opes de aviso.

    3 Selecione Mensagem.

    O Construtor de expresses ser exibido.

    4 Na caixa Mensagem, digite a mensagem apropriada.

    Dica Coloque as seqncias de caracteres entre aspas.

    Definindo a localizao dos ttulos de menusVoc pode personalizar a localizao dos ttulos de menus definidos pelo usurio em seusaplicativos. Pode, tambm, personalizar a localizao relativa ao sistema de menus ativoselecionando as opes na caixa de dilogo Opes gerais. Alm disso, a localizao de ttulos demenus poder ser especificada quando o usurio editar um objeto OLE visualmente.

    Para especificar uma localizao relativa para ttulos de menus definidos pelo usurio

    1 No menu Exibir, escolha Opes gerais.2 Escolha a opo Localizao: Substituir, Incluir, Antes ou Depois.O Visual FoxPro realoca todos os ttulos de menus que voc definiu. Se voc desejar realocar algunsttulos mas no todos, arraste os botes de deslocamento para prximo dos ttulos de menusapropriados no Criador de menus.

    Alm disso, voc pode especificar a localizao dos ttulos de menus quando o usurio editar umobjeto em seu aplicativo. Se voc incluir um objeto e o usurio ativ-lo, os ttulos de menus nosero exibidos na barra de menus resultante, a menos que voc indique que deseja que eles fiqueml.

    Para controlar a localizao do ttulo de menu durante a edio visual de um objeto

    1 Na coluna Aviso, selecione o ttulo de menu apropriado.

    2 Escolha o boto na coluna Opes para exibir a caixa de dilogo Opes de aviso.3 Defina a caixa de seleo Negociar.

    4 Escolha um dos botes de opo abaixo:

    Nenhum no coloca o ttulo do menu na barra de menus. Selecionar esta opo o mesmoque no escolher nenhuma opo.

    esquerda posiciona o ttulo de menu no grupo esquerda dos ttulos de menus na barra demenus.

    Meio posiciona o ttulo de menu no grupo do meio dos ttulos de menus na barra de menus.

    direita posiciona o ttulo de menu no grupo direita dos ttulos de menus na barra de menus.Se voc no selecionar esquerda, Meio ou direita, o ttulo de menu no ser exibido na barra demenus quando o usurio editar um objeto. Para obter maiores informaes sobre a edio visual de

    objetos OLE visualmente, consulte o captulo 16, Adicionando a OLE.

    Salvando e restaurando menusVoc pode salvar e restaurar menus na pilha com os comandos PUSH MENU e POP MENU. Autilizao destes comandos til quando voc deseja remover um menu temporariamente,substitu-lo por outro e, depois restaurar o original posteriormente.

    O nmero de menus que voc salva na memria limitado apenas pela quantidade de memriadisponvel.

    Dica Verifique a memria disponvel com a funo SYS(1016). Por exemplo, para verificar aquantidade de memria que o sistema de menus utiliza, chame SYS(1016), coloque o menu na pilhae, em seguida, chame SYS(1016) novamente.

  • 8/2/2019 15_-_capitulo11

    21/21

    Criando um procedimento padro para um sistema de menusVoc pode criar um procedimento global que se aplique ao sistema de menus inteiro. Esse

    procedimento ser executado sempre que um menu sem um procedimento atribudo for escolhido.Por exemplo, suponha que voc esteja desenvolvendo um aplicativo para o qual alguns menus aindano possuem submenus, procedimentos etc. Para esses menus, voc pode criar uma rotina noexecutvel de cdigo que executada quando os menus so selecionados. Por exemplo, vocpoderia criar um procedimento geral que inclua esta funo:

    MESSAGEBOX("Opo no disponvel")

    Para criar um procedimento padro

    1 Abra o sistema de menus que voc est criando.

    2 No menu Exibir, escolha Opes gerais.

    3 Atribua o procedimento executando um dos procedimentos abaixo:

    Escreva ou chame um procedimento na caixa Procedimento.

    Ou Selecione Editar e, em seguida, OK para abrir uma janela de edio separada e criar ou

    chamar um procedimento.

    Definindo o menu do sistemaVoc pode manipular os menus que usam o sistema de menus do Visual FoxPro usando o comandoSET SYSMENU. Com SET SYSMENU, voc pode desativar os menus, adicionar e remover itensdos menus, restaurar os menus padro do Visual FoxPro e controlar o acesso aos menus durante aexecuo do programa.