Programação Visual Orientada a Eventos 1 Conceito Programação Visual é um modelo de Programação no qual os usuários obtém informações através de imagens e objetos usualmente oriundos de uma tela de vídeo. 2 Programação Visual e Janelas Usam-se Interfaces Gráficas (baseadas em janelas ) para interação com o usuário As interfaces gráficas contém uma janela principal e um número variável de janelas secundárias A janela principal trata da interação primária com o usuário e contém um número arbitrário de objetos As janelas secundárias fornecem detalhes sobre os objetos exibidos na janela principal e sobre operações envolvendo esses objetos 3 Programação Visual e Janelas O usuário interage com o sistema selecionando um ou mais objetos (clicando sobre eles, por exemplo) e depois escolhendo uma operação (usando um menu, por exemplo) para ser executada sobre os objetos selecionados. São operações usuais Cortar, Copiar, Colar, Excluir e Ver Propriedades. 4 Programação Visual e Janelas Janelas principais possuem uma barra de menus tipo cortina ou "drop-down". Pode-se escolher operações por meio de menus suspensos ou "pop-up" (acionando o botão direito do mouse sobre o objeto desejado). Caso o número de objetos presentes seja grande pode-se empregar barras de rolagem ou simplesmente redimensionar a janela. As janelas também podem ser subdivididas em painéis ou quadros, que se pode redimensionar ou rolar. 5 Janelas Secundárias Janelas Secundárias dão suporte às janelas principais. Na janela principal só é possível exibir algumas propriedades dos objetos nela contidos. Outras propriedades podem ser vistas em janelas secundárias nas quais podem ser manipuladas por meio de botões Liga/Desliga, Caixas de Seleção, Botões de Seleção, Réguas, Caixas de Texto e Caixas Combinadas. 6 Janelas Secundárias Para diferenciar uma janela principal de uma janela secundária é interessante verificar que: Janelas principais são consideradas mais importantes, recebendo o maior foco de atenção de projetistas e usuários Janelas secundárias são exibidas navegando a partir das janelas principais e não vice versa. 7 Janelas Secundárias Além das janelas de propriedades, outros tipos de janelas secundarias são: Caixas de Diálogo Caixas de Mensagens Paletas Janelas suspensas ("pop-up") 8 Janelas Secundárias Muitas aplicações são baseadas em arquivos. Os usuários podem disparar estas aplicações com operações de Abrir um arquivo ou objeto e a janela principal mostra os objetos armazenados no arquivo aberto ou objeto selecionado. As operações usuais sobre arquivos são Salvar, Salvar Como, Abrir e Novo. 9 Janela Secundária de Propriedades de objetos Barras de rolagem 10 Janela Secundária de Operações sobre objetos 11 Conceitos Formulário – Uma superfície retangular que serve para modelar o fundo de imagem e para receber diversos componentes; Componente – Um objeto que pode ser anexado a um formulário para acrescentar uma determinada funcionalidade. 12 Os componentes podem ser de diversos tipos 13 Componentes para exibição e entrada de textos Rótulos ou textos Caixas de texto 14 Componentes que apresentam escolhas para os usuários Caixas de seleção (CheckBox) Botões de opção (OptionButton) Caixas de Listas (ListBox) Caixas combinadas (ComboBox) 15 • • • Componentes do tipo botões de comando (CommandButton) Barras de Rolagem (ScrollBar) Componentes que exibem figuras e gráficos Caixas de figuras (PictureBox) Formas e Imagens linhas (Shape, Line) 16 Painel Caixa de seleção Rótulo Botão de opção Caixa de texto Caixa combinada Botão de comando 17 Janela secundária tipo paleta 18 Componentes adicionais Menus Controles de Acesso a Dados Controles de Sistemas de Arquivos Controles Diversos Relógio (Timer) Caixas de diálogo comum (CommonDialog) Repositório de OLE (OLEContainer) Quadros (Frame) Barras de Ferramentas (Toolbar) Caixas de Diálogo 19 Menus Barra de menus (Drop-Down) Títulos de Menus Item de Menus Menus flutuantes (Pop-Up) 20 Menu tipo cortina 21 Controles de Acesso a Dados ﴂ ﴂ ﴂ ﴂ ﴂ Listas de Dados (DataList) Caixas combinadas de dados (DataCombo) ADO Data Control Grelhas de Dados (DataGrid) Grelhas Hierárquicas (HierarchicalFlexGrid) 22 Controles de Sistemas de Arquivos Caixas de Listas de Unidades (DriveListBox) Caixas de Listas de Pastas (DirListBox) Caixas de Listas de Arquivos (FileListBox) 23 Menu Suspenso Caixa de listas de unidades Caixa de listas de pastas Caixa de listas de arquivos 24 Janela de arquivos 25 Controles Diversos Relógio (Timer) Caixas de diálogo comum (CommonDialog) Repositório de OLE (OLEContainer) Quadros (Frame) Menus 26 Caixas de Diálogo Caixas modais e não modais Caixas Customizadas Caixas pré definidas Caixas de Entrada (InputBox) Caixas de Mensagens (MsgBox) 27 Caixa de mensagens 28 Caixa de diálogo 29 Descrição Sumária dos Componentes 30 Descrição dos Componentes Componentes do tipo botões de comando (CommandButton) Barras de Rolagem (ScrollBar) Componentes que exibem figuras e gráficos Caixas de figuras (PictureBox) Imagens Formas e linhas (Shape, Line) 31 Descrição dos Componentes Rótulos são áreas contendo textos e/ou imagens que, durante a execução do programa não podem ser alterados diretamente pelo usuário. Caixas de texto são áreas contendo textos que, durante a execução do programa podem ser alterados diretamente pelo usuário. 32 Descrição dos Componentes Botões de comando são áreas que correspondem a botões de acionamento de máquinas virtuais construídas pelo programa. Quadros, painéis ou “frames” são áreas diferenciadas do formulário destinadas a agrupar diversos componentes cujo emprego tenha uma ligação lógica. 33 Descrição dos Componentes Caixas de seleção são áreas utilizadas para indicar opções que podem estar selecionadas ou não sendo que essas opções são independentes umas das outras. Botões de opção são áreas utilizadas para indicar opções mutuamente exclusivas fazendo com que quando o usuário selecionar um desses botões torne sem ação todas as demais opções de mesma natureza. 34 Descrição dos Componentes Imagens servem para exibição de gráficos. Esses controles aceitando cliques de mouse servem também como botões de comando. Quando se carregar uma figura em um controle imagem o ajustamento entre tamanhos é feito pela propriedade Strecht. Quando esta for verdadeira a figura se ajusta ao tamanho do controle, podendo gerar distorções. Quando a propriedade for false o controle imagem se ajusta ao tamanho da figura. 35 Componente Imagem 36 Descrição dos Componentes Os controles Figura exibem gráficos e servem como aglutinadores de outros controles. Os controles figura são mais poderosos que os controles Imagem e consomem mais recursos computacionais. 37 Componente Figura 38 Propriedades 39 Propriedades Os formulários e componentes são caracterizados por uma lista de propriedades ou atributos. Para cada elemento visual as propriedades mais comuns são descritas a seguir 40 Propriedades Nome – identificador do componente dentro da programação; “Caption”- texto identificador do componente e que é exibido para o usuário; Dimensões – largura e comprimento do componente que, usualmente, é retangular; 41 Propriedades Posição no formulário – distâncias entre as bordas esquerda e superior do formulário e as bordas correspondentes do componente; Cor de fundo – cor da superfície do componente; Cor de frente – cor do texto apresentado no componente; Bordas – tipo de borda exibido; 42 Propriedades Variação automática de tamanho – capacidade de acomodação a textos de tamanho variável e ao tamanho da tela; As dimensões podem ser expressas em diversas unidades. Usualmente são expressas em twips que correspondem a 1/20 de um ponto de impressão. Como existem 72 pontos por polegada existem 1440 twips por polegada ou 567 twips por centímetro. 43 Caixa de propriedades 44 Métodos 45 Métodos Métodos são ações próprias do componente e que são previamente programadas 46 Métodos Método Botão de comando Rótulo Caixa de Texto Caixa de Listas Refresh sim sim sim sim Set Focus sim sim sim sim Move sim sim sim sim ADDItem não não não sim Clear não não não sim 47 Utilização 48 Utilização Os componentes são exibidos em barras de componentes ou paletas. Ao se iniciar um projeto automaticamente é exibido um formulário ainda não utilizado (“em branco”). 49 Utilização Para inserir um componente no formulário seleciona-se o componente na barra ou paleta (com o mouse) e, a seguir, pressiona-se o botão esquerdo do mouse no ponto do formulário que corresponderá ao vértice superior esquerdo do componente inserido. Mantendo o mesmo botão pressionado leva-se o mouse até o ponto correspondente ao vértice direito inferior do componente e solta-se o botão. 50 Formulário e Barra de ferramentas de componentes Barra de ferramentas de componentes Formulário 51 Utilização Imediatamente é exibida a lista de atributos ou propriedades do componente que poderá, então, ser preenchida ou alterada. Quando se desejar inserir outro componente basta repetir o procedimento. 52 Utilização A qualquer tempo pode-se selecionar um componente do formulário. Nessa ocasião o componente anteriormente selecionado perderá o foco de atenção e a lista de atributos exibida será a do novo componente selecionado. Caso seja acionada a tecla “Delete” estando selecionado um componente o mesmo será excluído do formulário. 53 Utilização Chama-se de foco à capacidade de receber entradas do usuário via teclado ou mouse. Apenas um componente de cada vez possui o foco que pode ser transferido por ações de mouse, teclado ou programação. Normalmente o ordem de transferência de foco é definida pela propriedade ordem de tabulação pois as teclas de entrada e de tabulação alteram a ordem de transferência de foco. 54 Utilização Para alterar tamanho de um componente selecionado basta aproximar o mouse de suas bordas. Nessa ocasião exibem-se setas duplas indicando direção de crescimento/decrescimento do componente. Basta, então arrastar as bordas no sentido desejado que pode ser horizontal, vertical ou inclinado sendo que neste último caso serão mantidas as proporções entre as dimensões do componente antes e depois da alteração de tamanho. 55 Utilização Para mudar um componente de posição basta colocar o mouse sobre o componente e mover o mouse na direção desejada. 56 Utilização Pode-se selecionar simultaneamente diversos componentes para ajustar propriedades comuns tais como dimensões, cor, tipo de letra, borda ou propriedades de alinhamento. 57 Eventos 58 Eventos são ações que atuam sobre o ambiente do programa. Os eventos mais comuns e evidentes são provenientes da ação do usuário, tais como Ação do mouse (botão sendo abaixado, ou clique) Entrada de dados via teclado Seleção de um item de uma lista Mudança de uma lista ou caixa 59 Eventos Na programação orientada a eventos os programas não tem processamento monolítico iniciando-se no disparo do programa e indo até a última linha de código e seu encerramento de uma só vez. Os programas são divididos em pequenos trechos que descrevem as respostas que o sistema deve fornecer a determinados eventos. 60 Eventos Após processar a resposta a um determinado evento o sistema permanece em estado de espera da ocorrência de um outro evento, Os programas só terminam em resposta ao evento de encerramento ou em caso de falha. 61 Eventos Os eventos usuais, que já tem cabeçalhos prontos para auxiliar o programador, comuns a praticamente todos os componentes são : Click, DragDrop, DeagOver, GotFocus, LostFocus, KeyDown, KeyUp, KeyPress, MouseDown, MouseUp, MouseUp e MouseMove. 62 Eventos Alguns componentes possuem previstos eventos de Change, Scroll, DbClick, ItemChecked e outros. 63 Tratamento de Eventos 64 Tratamento de Eventos Os eventos, quase sempre, são associados a componentes do formulário. Para escrever o código correspondente a um evento ligado a um componente deve-se passar ao editor de código. Isto é feito dando um duplo clique no componente (na janela do formulário). 65 Tratamento de Eventos Isto faz com que se abra a janela do editor de código com um protótipo do procedimento de tratamento do evento já iniciado. Para cada componente existem definidos um grande número de possíveis eventos que o editor de código exibe em um ComboBox (Caixa de Procedimentos/Eventos). 66 Tratamento de Eventos Nesta Caixa é exibido o Procedimento associado ao evento selecionado. Uma outra ComboBox é a Caixa de Objetos que exibe o objeto selecionado e contém a lista de todos os objetos associados ao formulário. 67 Tratamento de Eventos O código normalmente é dividido em diversas seções, sendo uma delas a seção geral para as variáveis globais e declarações, uma seção relativa ao formulário e uma seção para cada objeto contido no formulário. Na seção de cada objeto podem existir diversos procedimentos de tratamento de eventos. 68 Editor de códigos O editor de códigos apresenta um recurso de completamento de código através do qual sempre que se digitar o nome de um componente ou objeto e se aguardar um instante será apresentada uma lista de possíveis continuações da qualificação do objeto. 69 Editor de código Editor de código 70 Completamento de código 71 “Arrays” de componentes Coleção ou grupo de componentes que compartilham o mesmo nome, o tipo e os procedimentos de tratamento de eventos Emprego mais freqüente é em menus e em agrupamento de botões de opção Utiliza menor quantidade de recursos do que o uso de múltiplos componentes semelhantes independentes uns dos outros Para criar um “array” de componentes basta dar o mesmo nome de um componente existente e confirmar a intenção de criar um “array” de componentes Os elementos de um “array” são identificados pelo nome do “array” seguido da numeração seqüencial de sua posição dentro do “array”, entre parênteses. A numeração inicia em zero. 72 Um projeto Visual Basic compreende diversos arquivos Módulos de formulários (.frm) Módulos de classes (.class) Módulos padrão (.bas) Módulos de recursos (.res) Documentos ActiveX (.dob) Controles do usuário (.ctl) Módulos de propriedade de páginas (.pag) Controles ActiveX (.ocx) 73 Inclusão de Controles ActiveX A inclusão de controles ActiveX em um projeto é feita através da Caixa de Diálogos de Componentes. Na lista de componentes exibida na aba Controles deve-se selecionar a caixa de seleção à esquerda do nome do componente e acionar o botão OK. Isto fará com que o componente passe a aparecer na barra de ferramentas. Caso o componente não figure na Caixa de Diálogo deve-se acionar o botão Browse e procurar em outras pastas os discos o arquivo com o componente desejado. Quando este arquivo é selecionado automaticamente o nome do componente vai para a caixa de diálogo com a caixa de seleção selecionada. 74 Dimensões Visuais As dimensões visuais são posição, tamanho, forma e cor. A usabilidade das interfaces cresce bastante usando dimensões visuais dos objetos e seus atributos. Por meio das dimensões visuais pode-se exibirde um número de atributos maior do que aquele mínimo necessário para identificar um objeto. 75 Vantagens de exibição de maior número de atributos Evitar que o usuário tenha o trabalho adicional de navegação para visualizar outros atributos do objeto selecionado Permitir que o usuário verifique os diversos aspectos dos objetos ao mesmo tempo, o que é bom para comparações e o reconhecimento de padrões. 76 Posição Combinando com tamanho pode exibir as posições do mundo real Essencial para GIS, CAD, WYSIWYG Em algumas situações é importante e em outras não (tamanho de aeroportos em cartas aeronáuticas) 77 Tamanho Para representar um arquivo, por exemplo, o tamanho do objeto exibido pode representar o espaço de armazenamento ocupado pelo arquivo Para uma conta bancária o tamanho do objeto exibido pode representar o saldo. Uma escala logarítmica é melhor do que uma escala linear, pois escalas lineares tendem a crescer muito, ocupando muito espaço nas janelas. 78 Forma O atributo forma usualmente é explorado por meio de ícones. As formas são boas na representação de tipos mas não o são para dados numéricos ou literais. 79 Ícones 80 Cor A percepção visual pode ser dividida em três componentes: matiz, saturação e sombra. Matiz pode representar tipo para uma pequena enumeração de valores. Saturação pode ser má escolha pois alta saturação torna a interface desagradável e baixa diferenças de saturação são difíceis de perceber visualmente. Para que a sombra não seja confusa deve-se evitar o branco e o preto totais, ficando entre o sombreamento alto e baixo. 81