Em VB, o formulário MDI (MultipleDocumentInterface, programa de múltiplas janelas) é definido assim: "O formulário MDI serve como janela de fundo de um programa e contém um formulário com o atributo MDIChild definido como True." Em um programa VB, pode haver no máximo um formulário pai MDI e vários formulários filhos MDI. A maneira de criar um formulário pai MDI é selecionar "NewMDIForm" no menu Arquivo do VB.
Quando o programa MDI estiver em execução, se a janela filho tiver um menu, quando a janela filho for ativada, o menu da janela filho substituirá automaticamente o menu da janela pai quando a janela filho for minimizada, a janela filho será; aparecerá na janela pai do MDI.
O surgimento da interface gráfica universal do Windows permite que os usuários de computador usem vários softwares do Windows facilmente, sem aprendizado especial. Além disso, é um padrão que os designers de programas devem seguir ao projetar a interface dos programas do Windows. designers de programas, permitindo-lhes concentrar-se na resolução e implementação de problemas.
O surgimento do Visual Basic simplificou ainda mais o design das interfaces de programas do Windows. Apenas uma pequena quantidade de código é necessária para implementar a interface dos aplicativos padrão do Windows. No entanto, se você não compreender os princípios do design de interface de programas do Windows ou não estiver familiarizado com as habilidades de programação de interface em VB, será difícil projetar e implementar uma interface que esteja em conformidade com os padrões gerais e seja única. Princípios do Design de Interface O design de interface possui princípios gerais, os mais importantes são:
A interface precisa ser consistente. O princípio da consistência é o mais fácil de violar no design de interfaces e também o mais fácil de modificar e evitar. Por exemplo, a mesma terminologia deve ser usada nos menus e as caixas de diálogo da ajuda online devem ter o mesmo estilo;
Deve haver atalhos para operações comuns. Operações comuns são usadas com frequência e a duração da sequência de operações deve ser reduzida. Por exemplo, defina teclas de atalho para operações comuns de arquivos, como abrir, salvar e salvar como. Fornecer atalhos para operações comuns não só melhorará a eficiência do trabalho do usuário, mas também tornará a interface simples e eficiente na implementação funcional.
Fornece tratamento de erros simples. O sistema deve ter recursos de tratamento de erros. O sistema deve ser capaz de detectar erros quando eles ocorrem e fornecer recursos de tratamento de erros simples e compreensíveis. O status do sistema não muda após a ocorrência de um erro ou o sistema precisa fornecer orientação para recuperação de erros.
Forneça feedback informativo. Deve haver feedback de informações para operações importantes do operador. Não há necessidade de feedback sobre operações comumente usadas e operações simples, mas para operações usadas com pouca frequência e operações cruciais, o sistema deve fornecer feedback de informações.
A operação é reversível. A operação deve ser reversível. Isto é útil para operadores sem conhecimento especializado. Uma ação reversível pode ser uma operação única ou uma sequência de operações relativamente independente.
Ajuda online bem projetada. Embora a ajuda online não seja essencial para usuários qualificados, ela desempenha um papel muito importante para a maioria dos usuários não qualificados.
Princípios e programação de design de menu
O design do menu segue os seguintes princípios gerais:
Organize os menus de acordo com as funções do sistema.
Escolha uma árvore de menu larga e rasa em vez de uma árvore de menu estreita e profunda.
Agrupe as opções do menu de acordo com o seu significado e ordene-as de acordo com determinadas regras. Os títulos das opções de menu devem ser curtos, claros e, de preferência, começar com uma palavra-chave.
As teclas de atalho precisam ser definidas para opções usadas com frequência. Combinando os princípios acima, a programação de menus conta com as seguintes tecnologias e técnicas:
Agrupamento de opções de menu
No VB, o agrupamento das opções do menu é feito dividindo a barra de menu com linhas horizontais. Adicione um item de menu com um atributo Caption "" em uma determinada posição no menu e ele aparecerá como uma linha horizontal no menu. Em muitos casos, o mesmo menu de funções pode ser dividido em vários grupos de acordo com as funções das opções do menu. Neste caso, as linhas horizontais divisórias podem ser utilizadas para agrupar os itens do menu.
Configurações de teclas de atalho para opções comuns
Abra a janela de design do menu (MenuDesignWindow). Deve haver uma lista de teclas de atalho (Shortcut) correspondente para cada opção do menu. Deve-se observar que as teclas de atalho para menus com submenus ou menus de nível superior não podem ser definidas desta forma. De acordo com os princípios de design da interface do Windows, a tecla de atalho para o menu superior tem a forma da tecla Alt. Seu método de implementação será descrito posteriormente.
Para alguns itens de menu de funções comumente usados, existem teclas de atalho convencionais. Por exemplo, use CTRL O para abrir um arquivo, CRTL S para salvar um arquivo, CTRL P para imprimir e assim por diante.
Depois de definir uma tecla de atalho para uma opção de menu, uma representação de texto da tecla de atalho aparece atrás da opção no menu.
Ativar e desativar opções de menu visíveis e ocultas Para expressar algumas funções especiais de opções de menu, os atributos ativar e desativar, visíveis e ocultos de opções de menu podem ser usados. Quando a função representada por uma opção não puder ser realizada por algum motivo, a opção deverá ser proibida de ser selecionada. As opções de menu são ativadas e desativadas alterando o atributo Ativado da opção. Por exemplo, assumindo que a opção de menu se chama nmuName, a desativação desta opção pode ser implementada da seguinte forma:
mnuName.Enabled=Falso
Da mesma forma, você pode ocultar uma opção usando
mnuName.Visible=Falso
Para conseguir isso, para tornar uma opção oculta visível novamente, use
mnuName.Visible = Verdadeiro
concluir.
Ocultar e restaurar a visibilidade dos itens de menu é frequentemente usado na implementação de menus dinâmicos.
Carregamento dinâmico de itens de menu
O carregamento dinâmico de itens de menu significa que o número de itens de menu não é fixo e pode ser carregado dinamicamente quando necessário. O exemplo mais simples é a lista de arquivos abertos recentemente no menu Arquivo. Antes de abrir um arquivo pela primeira vez, a lista está vazia e não aparece no menu de arquivo. Depois de abrir um arquivo, a lista não está mais vazia e o item de menu que representa o arquivo aberto aparece no menu de arquivo;
No exemplo acima, o atributo subscript (Index), o atributo title (Caption), o atributo visível (Visible) do item de menu e o método de carregamento (LoadMethod) do item de menu são usados de forma abrangente.
O processo de implementação específico é o seguinte:
Adicione um item de menu ao menu de arquivo com um título arbitrário e suponha que o atributo Nome do item de menu seja opens_files_list;
Altere o atributo visível do item de menu opens_files_list para que opens_files_list.Visible=False
Altere o atributo subscrito do item de menu opens_files_list para que
open_files_files_list.Index=0
Controle o carregamento dinâmico do item de menu opens_files_list no programa.
Suponha que você queira exibir o nome do segundo arquivo que foi aberto e que o nome do arquivo esteja armazenado em uma matriz de nomes de arquivo open_file_name. O código a seguir implementa esta função:
Loadopened_files_list(1)
arquivos_abertos_lise(1).Caption="&2" nome_do_arquivo_aberto(1)
open_files_list(1).Visible=True
Deve-se observar que o método Load não pode ser usado para itens de menu cujo subscrito seja 0. Além disso, como o item de menu foi carregado na memória quando o programa é executado, o caractere "&" no caractere de atributo do título do item de menu tem um significado especial e sua função é exibir a string de atributo. ao mesmo tempo, o "&" em si não é exibido, mas o caractere imediatamente após o "&" é exibido com um sublinhado e o caractere se torna uma tecla de atalho.
Se o item de menu cujo índice não é 0 não for mais necessário, para reduzir a ocupação de recursos de memória, você pode usar o método Unload para descarregá-lo da memória da mesma forma, você não pode usar Unload para descarregar o item de menu cujo índice; é 0.
Implementação de menu pop-up (PopupMenuMethod)
O menu projetado na janela de design de menu (MenuDesignWindow) em VB é um menu suspenso. O menu suspenso é um menu que o usuário pode acessar após fazer uma seleção na barra de menu superior a qualquer momento, enquanto o menu pop-up é um menu que aparece após clicar com o botão do mouse em uma determinada área do a interface do programa. Em alguns casos, os menus pop-up podem tornar as funções do sistema mais concisas e eficientes, tornando-as mais fáceis de usar.
O menu pop-up do programa Widnows geralmente aparece quando o usuário clica com o botão do mouse na área de trabalho do programa. Os menus pop-up são usados principalmente para implementar funções adicionais ou aprimoradas do sistema. O conteúdo do menu pop-up pode mudar dependendo de onde o botão do mouse é clicado. Como o menu pop-up cobrirá parte da tela, o texto do menu deverá ser reduzido tanto quanto possível.
No VB, a implementação de menus pop-up requer o uso da tecnologia de design de menu suspenso e do método PopupMenu. O método específico é:
Projete o menu pop-up do formulário correspondente na janela de design do menu (MenuDesignWindow). Ressalta-se que o menu a ser exibido deve possuir pelo menos um submenu, portanto este menu não pode conter teclas de atalho e o atributo Checked deve ser False; Em seguida, altere a propriedade Visible do menu pop-up para False.
Adicione o seguinte código ao Form_Click do formulário com o menu pop-up projetado (assumindo que a propriedade Name do menu pop-up seja mnuExample):
SubFormulário_Clique()
PopupMenumnuExemplo
Fim Sub
Se desejar que o menu só possa ser ativado pressionando o botão esquerdo ou direito do mouse, você deve adicionar o seguinte código ao Form_MouseDown:
SubForm_MouseDown(ButtonAsInteger,ShiftAsInteger,xAsSingle,yAsSingle)
IfButton=2thenButton=2 significa botão direito do mouse
PopupMenumnuExemplo
FimSe
A sintaxe completa do PopupMenu é:
[Formulário.]PopupMenumenuname[flags[,x[,y]]]
Alterar o valor dos sinalizadores pode controlar a aparência do menu pop-up. Os sinalizadores têm dois conjuntos de valores. O primeiro conjunto de valores é usado para controlar o modo de exibição do menu, incluindo POPUPMENU_LEFTALIGNPOPUPMENU_CENTERALIGN e POPUPMENU_RIGHTALIGN, que representam respectivamente o modo de exibição com x como borda esquerda, x como centro ex como borda direita. E usar x como limite esquerdo é o método padrão; outro conjunto de valores é usado para controlar o método de seleção de itens de menu, incluindo POPUPMENU_LEFTBUTTON e POPUPMENU_RIGHTBUTTON, que indicam respectivamente a seleção com o botão esquerdo e a seleção com o botão esquerdo/direito, e a seleção com o botão esquerdo é a forma padrão. O valor de Flags é obtido fazendo OR nos dois conjuntos de valores acima. Por exemplo, se for necessário que a exibição esteja alinhada à esquerda e o botão esquerdo esteja selecionado, então deverá ser:
flags=POPUPMENU_LEFTALIGNORPOPUPMENU_LEFTBUTTON
x e y são usados para definir a posição do menu pop-up. O padrão é a posição do ponto do mouse.
Outras propriedades de itens de menu
Use a tecla ALT para ativar o menu de nível superior ou use a tecla alfabética para ativar um item de menu após a ativação do menu. Você deve aprender a usar &. & é usado no atributo title (Caption) do item de menu. Seu uso e função são os mesmos dos programas Windows compilados em linguagem C.
Às vezes você deseja que o espaço entre os menus de nível superior seja maior ou que um menu de nível superior apareça na extremidade direita da barra de menus. Nesse caso, você precisa usar um menu com um atributo de título de espaço. Se o título de um menu for composto por vários espaços, então o menu ocupará o espaço correspondente ao número de espaços na barra de menus, e os menus atrás dele também serão movidos para trás sequencialmente se a propriedade Visível deste menu for; False , então é como se não existisse.
Princípios e exemplos de design de janelas
Abaixo está um exemplo de tecnologia de janela flutuante. Para atrair a atenção do usuário ou para garantir que as janelas que contêm informações importantes não sejam cobertas por outras janelas, a tecnologia de janela flutuante é usada para criar uma janela "TopMost". O método específico é:
(1) Adicione a seguinte instrução ao programa VB:
DeclareFunctionSetWindowPosLib"usuário"(Byvalh,Byvalhb,Byvalx,Byvaly,By
valcx,Byvalcy,Byvalf)AsInteger
GlobalConstSWP_NOMOVE=2
GlobalConstSWP_NOSIZE=1
GlobalConstHWND_TOPMOST=1
GlobalConstHWND_NOTOPMOST=2
GlobalConstFLAGS=SWP_NOMOVEOrSWP_NOSIZE
(2) Suponha que você queira definir o formulário frmExample para ser a janela que está sempre na frente. Basta definir o formulário no Form_Load do formulário frmExample.
Adicione o seguinte código ao processo:
Mal sucesso
sucesso=SetWindowPos(frmExample.hWnd,HWND_TOPMOST,0,0,0,0,FLAGS)
Se quiser cancelar o recurso que está sempre no topo, você pode executar o seguinte código:
sucesso=SetWindowPos(frmExample.hWnd,HWND_NOTOPMOST,0,0,0,0,FLAGS)
O sucesso não é igual a 0, o que significa que SetWindowPos foi executado com sucesso.
Em um programa MDI, uma janela é a janela pai de todas as outras janelas, e cada janela filho completa uma função relativamente independente, assim como uma combinação de múltiplas ferramentas independentes. Nesse sentido, o MSWord e o FileManager do Windows são os melhores exemplos. ->