Características de trabalhar com interfaces em Delphi. As melhores soluções de TI para empresas Os tamanhos das janelas não devem exceder o tamanho da tela

apenas para resultados

cumprimento rigoroso dos prazos

Transparência

implementação de projeto

suporte técnico como um presente

Programação, melhorias, consultas sobre 1C

Como estamos trabalhando

1. Discutimos o problema por telefone. Na presença de acesso remoto- mostrar na tela do seu computador.

2. Avaliamos o trabalho em rublos se o projeto for grande, se não - o número aproximado de horas.

3. Nós fazemos o trabalho.

4. Você aceita trabalhar em seu programa, se houver falhas, nós as corrigimos.

5. Nós emitimos uma fatura, você paga.

Custo do trabalho

1. Todos os trabalhos são divididos em 3 categorias: consulta, atualização de uma configuração típica, desenvolvimento ou programação de um novo relatório, processamento, botões, etc.

3. Para trabalhos superiores a 10 horas, é preparada previamente uma tarefa técnica com descrição e custo do trabalho. O trabalho começa após a aprovação do TOR com você.

Suporte técnico

1. Se você encontrar algum erro em trabalhos previamente aceitos, em até 3 meses, nós os corrigimos gratuitamente.

2. Para clientes regulares, corrigimos quaisquer falhas em nosso trabalho gratuitamente dentro de um ano.

Programas para gerir o seu negócio.

Compre 1C:Empresa

Nós somos o revendedor oficial da 1C, você pode comprar de nós vários produtos de software e licenças. Além de comprar uma "caixa", vamos ajudá-lo a configurar o programa, consultar e fazer configurações básicas.

  • Contabilidade
  • Automação de loja
  • Atacado
  • Auxílio na instalação e configuração inicial incluso no pacote!
  • Ajuste das configurações às necessidades do cliente, desenvolvimento de novos módulos na ausência das funções necessárias na configuração padrão.
1c contabilidade 1C: Gestão comercial 1C: Varejo 1C: Gestão de Folha de Pagamento e Recursos Humanos
A partir de 3300 esfregar. A partir de 6700 esfregar. A partir de 3300 esfregar. A partir de 7400 esfregar.

Fornecendo um servidor.

Servidor de configuração instantânea + 1C.

Nenhum servidor? Não importa, vamos selecionar e configurar rapidamente um servidor na "nuvem". Por uma pequena taxa, você obtém uma solução muito confiável.

  • Disponibilidade 24\7
  • Não há necessidade de manter o seu próprio administrador do sistema(a economia cobrirá o custo do seu servidor).
  • Rápida configuração e instalação do 1C no servidor, em 3 dias você já terá um sistema totalmente funcional.
  • A qualquer momento você pode ir para servidor local se a solução não for satisfatória.

SMS do seu 1C

Você quer que os clientes saibam sobre promoções e descontos a tempo? Os clientes não retornam? Customizar enviando SMS direto de 1C!

Nossa empresa poderá configurar rapidamente o envio de SMS para seus clientes diretamente da 1C. Exemplos de eventos que podem ser automatizados:

  • Gratidão pela compra e acúmulo de bônus imediatamente após a próxima compra.
  • Acumulação de bônus no cartão como presente para um aniversário/outro dia importante ou feriado.
  • Notificação do armazém.
  • Expiração do vale-presente.
  • Notificação de recebimento de pré-pagamento e reserva de mercadorias.
  • Endereço com indicações para a loja/escritório, números de telefone.
  • etc.

A configuração em 1C pode ser feita por nossos especialistas ou nossos funcionários. Você pode se familiarizar com as tarifas na página de tarifas SMS.

  • garantia Entrega de SMS, o dinheiro é retirado apenas para SMS entregues.
  • Cobrança separada para cada SMS.
  • Reabastecimento do saldo de várias maneiras.
  • Visualize o histórico de todos os SMS enviados a qualquer momento.
  • O nome do remetente em vez do número numérico no telefone do destinatário.

Criação interface o usuário fica reduzido a escolher na paleta de componentes os componentes do Delphi necessários para o funcionamento do programa, servindo interface gestão, bem como interface exibindo informações e transferindo-as para o Formulário com layout subsequente.

A interface do usuário que você cria deve usar elementos padrão e familiares ao usuário e fornecer o máximo de conveniência. Tudo isso é determinado por um critério como a eficácia da interface - o resultado máximo com o mínimo de esforço.
Princípios de criação interface amigável conhecido. como o mais princípios gerais ao criar interfaces de usuário três pontos principais podem ser considerados:

  1. O programa deve ajudar a realizar a tarefa, não se tornar a tarefa.
  2. Ao trabalhar com o programa, o usuário não deve se sentir um tolo.
  3. O programa deve funcionar de tal forma que o usuário não considere o computador um tolo.
Primeiro princípio- esta é a chamada "transparência" da interface. A interface do usuário deve ser intuitiva, fácil de aprender e não criar problemas para o usuário que ele terá que superar no processo. Use padrão, sem componentes de embelezamento excessivos, use familiar, usado programas semelhantes técnicas de gestão, e você atingirá os critérios de desempenho primeiro princípio.

Segundo princípio encontra-se no descaso habilidades intelectuais Comercial. Pela minha própria experiência, sei que muitas vezes os usuários não apenas não sabem como trabalhar em um computador, mas simplesmente têm medo de fazer qualquer coisa por conta própria. Portanto, a interface do usuário deve ser o mais amigável possível.
Além disso, os temores dos usuários são muitas vezes justificados, pois o custo do programa e do próprio computador não pode ser comparado ao custo, por exemplo, de um banco de dados criado ao longo de muitos anos de esforço. É por isso que o programador, ao criar uma interface de usuário, deve sempre construir no programa "proteção contra tolos" - contra ações erradas e entrada de dados incorretos pelo usuário. Mas alguns programadores se empolgam demais com essa proteção, a tornam muito intrusiva e, como resultado, a operação do programa se assemelha ao famoso "passo à esquerda, passo à direita é considerado uma fuga"! E o que um programador cria como solução para um problema, ele mesmo começa a criar problemas.
Para cumprir segundo princípio não há necessidade de permitir que o programa "corrija" as ações do usuário e indique o que exatamente agir para ele, levando-o a um quadro estreito. Além disso, não se deve ficar muito empolgado com a exibição de mensagens de dicas informativas, especialmente as de diálogo, pois isso distrai o usuário do trabalho. E é melhor prever a possibilidade de desabilitar completamente os prompts.

Terceiro princípioé criar um programa com as maiores habilidades "mentais" possíveis. Apesar do rápido desenvolvimento tecnologia de computador, mesmo programas difundidos só podem ser chamados de inteligência artificial muito condicionalmente. Eles interferem na experiência do usuário exibindo caixa de diálogo com perguntas estúpidas que causam perplexidade mesmo nas situações mais simples. Como resultado, os usuários exclamam em seus corações: "Bem, este carro é estúpido!"
Pessoalmente, fico incomodado com as perguntas constantes de quase todo mundo. editores de texto sobre se deseja salvar o texto alterado, embora o texto original e o atual não diferem em um único caractere. Sim, eu digitei alguma coisa, mas depois devolvi tudo de volta, é realmente impossível descobrir! Tenho que verificar se errei em algo.

Tente seguir as seguintes regras:

Elementos de interface padrão
Use o padrão para dado elemento interface do componente. Tendo conhecido seu programa, o usuário não perderá tempo para se conhecer, mas começará imediatamente a trabalhar - esse é um dos sinais de um programa feito profissionalmente.
Pequena paleta de ferramentas
Tente não usar muito um grande número de vários componentes. E, claro, usando um componente padrão em algum lugar em um lugar, em um caso semelhante, também o use.
Espaçamento igual entre os controles
Disponha os elementos da interface à mesma distância uns dos outros. Os componentes espalhados aleatoriamente criam a sensação de um produto não profissional. E vice-versa, a colocação cuidadosamente calibrada na Forma de botões, interruptores, checkboxes e outros componentes que compõem a interface é sinal de trabalho de qualidade.
ordem de tabulação. "ordem correta
TabOrderé a ordem na qual o cursor do ecrã se move sobre os controlos quando uma tecla é premida Aba. Em um programa escrito corretamente, o cursor se move, seguindo a lógica do trabalho do usuário com o programa. Ao criar um programa, o programador geralmente altera componentes, remove alguns e adiciona outros conforme necessário. Como resultado, no programa finalizado, o cursor salta aleatoriamente sobre o formulário. Depois de concluir o programa, não se esqueça de definir TabOrder.
Seleção de fonte
Apenas deixe as fontes em paz. As próprias fontes padrão do Delphi funcionarão para qualquer sistema em que seu programa possa ser executado. Use fonte em negrito apenas para destacar elementos importantes. Inscrição cursivo e especialmente sublinhando, que o usuário pode confundir com um hiperlink - forma incorreta.
Escolha de cores
Quanto às cores dos elementos da interface, assim como no caso das fontes, é melhor deixá-las padrão, por padrão. O Delphi usa a paleta do sistema Windows e, alterando-a, o usuário pode personalizar facilmente as cores.
Gestão alternativa
Um programa feito profissionalmente deve poder ser controlado não apenas com o mouse, mas também com o teclado. Não deve haver funções disponíveis para execução apenas com o mouse (desenho em editores gráficos não conta!). Para as funções mais utilizadas, devem ser fornecidas "teclas de atalho" para acesso rápido.
Blocos de construção de interface
Com relação a elementos específicos da interface do usuário, a qualidade da interação do usuário com o programa depende de:
  • conformidade do elemento de controle com sua tarefa;
  • as regras pelas quais o controle opera.
    Esta página discute as regras para criar alguns elementos de interface.
E agora quero mostrar quais ferramentas o Delphi oferece para gerenciar componentes no Form, sua posição relativa e comportamento do cursor quando uma tecla é pressionada. Aba.

Para organizar os componentes um em relação ao outro na ordem correta, primeiro preciso destacá-los. Você pode simplesmente arrastar o mouse sobre a área do formulário que contém os componentes selecionados. Ou segurando Mudança", especifique com o mesmo mouse cada componente a ser selecionado. Clique repetidamente com o mouse no componente selecionado (enquanto pressiona " Mudança") o desmarca.

Os componentes selecionados podem ser gerenciados como um único todo - movidos pelo formulário, atribuídos valores às mesmas propriedades, copiados (para instalação, por exemplo, em outro formulário), até excluídos.

Agora clique com o botão direito do mouse em um dos componentes e, no menu "pop-up", selecione Posição -> Alinhar... Uma caixa de diálogo aparecerá permitindo que você ajuste a posição dos componentes no grupo horizontalmente e verticalmente. Por exemplo, precisamos alinhar nossos quatro botões à esquerda e garantir que entre eles haja mesma distância verticalmente. Para fazer isso, selecione os botões de opção Horizontal: lados esquerdos E Vertical: espaço igualmente.

Selecionando um item Centro, vamos organizar os componentes de modo que seus centros estejam localizados na mesma linha horizontal ou verticalmente, e o ponto Centro na janela move os componentes para o centro da janela, horizontalmente ou verticalmente.

No mesmo menu, a linha Aba O pedido... faz com que apareça uma caixa de diálogo que controla o movimento do cursor pelos elementos da interface quando uma tecla é premida Aba. Quando o formulário aparecer na tela, o cursor estará naturalmente no componente localizado na primeira linha da caixa de diálogo. E então ele vai descer na lista. Na caixa de diálogo, duas setas azuis "para cima" e "para baixo" controlam a posição do componente selecionado. Realçar componente necessário, use as setas para mover para a linha desejada na lista e assim por diante.

Ao selecionar um item de menu Controle -> Um submenu aparece com dois itens:

  • Traga para frente
  • enviar para trás
Esses são métodos de componentes que também estão disponíveis programaticamente. Botão1.EnviarParaVoltar move o botão para o "fundo" e Botão 1. Trazer para a frente- traga para frente". Ou seja, se um componente é colocado acima de outro, esses métodos os trocam. Os casos em que isso pode se aplicar são bastante óbvios.

A programação orientada a objetos (POO), além do conceito de classe, também fornece o conceito fundamental de interface.

O que é uma interface e quais são os recursos para trabalhar com ela na linguagem de programação Delphi?

Uma interface é uma construção semântica e sintática no código do programa usada para especificar os serviços fornecidos por uma classe ou componente (Wikipedia).

De fato, uma interface define uma lista de propriedades e métodos que devem ser usados ​​ao trabalhar com uma classe que implementa essa interface, bem como sua assinatura (nome, tipo de dados, parâmetros aceitos (para procedimentos e funções), etc.). Assim, uma classe que implementa uma interface deve necessariamente implementar todos os seus componentes. Além disso, em estrita conformidade com a forma como estão descritos no mesmo.

Muitas vezes, as interfaces são comparadas com classes abstratas, mas apesar de todas as semelhanças, essa comparação não é totalmente correta. Em classes abstratas, no mínimo, o controle sobre a visibilidade dos membros está disponível. Ao mesmo tempo, os escopos não são definidos para interfaces.

As interfaces permitem tornar a arquitetura mais flexível, pois unificam o acesso a uma funcionalidade específica e também permitem evitar vários problemas associados à herança de classes (as interfaces também podem ser herdadas umas das outras).

Delphi usa a palavra-chave interface para declarar uma interface. Esta é a mesma palavra-chave que define uma seção do módulo que pode ser acessada de fora (entre palavras-chave interface e implementação). No entanto, ao declarar uma interface, uma sintaxe diferente é usada, semelhante à declaração de classes.

Delphi/Pascal

IMyNewInterface = procedimento de interface InterfaceProc; fim;

IMyNewInterface = interface

procedimento InterfaceProc ;

fim ;

Assim, a própria sintaxe de declaração de interface não possui diferenças fundamentais de outras linguagens de programação (os recursos de sintaxe baseados em Pascal não contam). Ao mesmo tempo, a implementação de interfaces possui vários recursos característicos.

O fato é que as interfaces Delphi foram originalmente introduzidas para suportar a tecnologia COM. Portanto, a interface IInterface, que em Delphi é a ancestral de todas as outras interfaces (uma espécie de análogo de TObject), já contém três métodos básicos para trabalhar com essa tecnologia: QueryInterface, _AddRef, _Release. Como resultado, se uma classe implementa qualquer interface, ela também deve implementar esses métodos. Mesmo que essa classe não seja projetada para funcionar com COM.

Devido a esse recurso da interface IInterface, no Delphi o uso de interfaces, na maioria dos casos, leva à adição de recursos obviamente não utilizados à classe.

Existe uma classe de biblioteca TInterfaceObject, que já contém a implementação desses métodos e, ao herdar dela, não há necessidade de implementá-los você mesmo. Mas como o Delphi não suporta herança de múltiplas classes, seu uso geralmente só causa complexidade adicional no projeto e implementação de funcionalidades já necessárias.

Tudo isso levou ao fato de que, apesar de todas as possibilidades oferecidas pelas interfaces, seu uso prático em Delphi quase não foi além de trabalhar com COM.

Sendo otimizadas para trabalhar principalmente com esta tecnologia, as interfaces, ou melhor, as funcionalidades e restrições arquitetônicas que adicionam sem falhas, não se justificam na resolução de outros problemas.

Portanto, muitos programadores Delphi ainda estão, de fato, privados de uma ferramenta poderosa e flexível para o desenvolvimento de arquitetura de aplicativos.

Este artigo é baseado em perguntas nos fóruns: "Como faço para retornar uma string de uma DLL?", "Como faço para passar e retornar uma matriz de registros?", "Como faço para passar um formulário para uma DLL?".

Para que você não gaste metade da sua vida descobrindo - neste artigo, trarei tudo em uma bandeja de prata.

Os tópicos deste artigo, em graus variados, já foram abordados mais de uma vez neste blog, mas neste artigo eles estão reunidos em uma pilha, as justificativas são dadas. Em suma, um link para este artigo pode ser lançado para aqueles que desenvolvem a DLL.

Nota importante: artigo deve ser lido sucessivamente. Exemplos de código são fornecidos apenas como exemplos, a cada passo (ponto) do artigo, o código de exemplos é adicionado com novos detalhes. Por exemplo, no início do artigo não há tratamento de erros, são indicados métodos "clássicos" (como usar GetLastError , convenções sdtcall etc.), que são substituídos por outros mais adequados no decorrer do artigo. Isso é feito porque os designs "novos" ("incomuns") não levantam dúvidas. Caso contrário, a cada exemplo, seria preciso inserir uma nota do tipo: "isso é discutido naquele parágrafo abaixo, mas isso - neste aqui". De qualquer forma, no final do artigo há um link para um código pronto escrito levando em consideração tudo o que foi dito no artigo. Você pode simplesmente pegar e usar. E o artigo explica por que e por quê. Se você não estiver interessado em "por que e por quê" - role até o final para a conclusão e um link para baixar o exemplo.

Um e o mais forças O ambiente de programação Delphi é sua arquitetura aberta, graças à qual o Delphi permite uma espécie de metaprogramação, permitindo "programar o ambiente de programação". Essa abordagem leva o Delphi a um nível qualitativamente novo de sistemas de desenvolvimento de aplicativos e permite incorporar Ferramentas que suportam quase todos os estágios de criação de sistemas de aplicativos. Uma gama tão ampla de possibilidades se abre graças ao conceito das chamadas interfaces abertas implementadas em Delphi, que são o elo entre o IDE (Integrated Development Environment) e as ferramentas externas.

Este artigo se concentra nas interfaces abertas do Delphi e fornece uma visão geral dos recursos que elas fornecem. O Delphi define seis interfaces públicas: Interface de ferramenta, Interface de design, Interface de especialista, Interface de arquivo, Interface de edição e Interface de controle de versão. É pouco provável que, no âmbito deste artigo, pudéssemos cobrir em detalhes e ilustrar as possibilidades de cada um deles. Os textos-fonte do Delphi irão ajudá-lo a compreender melhor as questões em consideração, uma vez que os desenvolvedores forneceram comentários detalhados. As declarações de classe que representam interfaces públicas estão contidas nos módulos correspondentes no diretório ...\Delphi\Source\ToolsAPI. A Interface de Design (módulo DsgnIntf.pas) fornece os meios para criar editores de propriedades e editores de componentes.

Editores de propriedades e componentes são um tópico digno de uma discussão à parte, por isso lembramos apenas que o editor de propriedades controla o comportamento do Object Inspector quando você tenta alterar o valor da propriedade correspondente, e o editor de componentes é ativado quando Duplo click botão esquerdo do mouse na imagem do componente colocado no formulário. A Interface de Controle de Versão (módulo VCSIntf.pas) foi projetada para criar sistemas de controle de versão. A partir da versão 2.0, o Delphi suporta o sistema de controle de versão integrado Intersolv PVCS, portanto, na maioria dos casos, não é necessário desenvolver seu próprio sistema. Por esse motivo, também omitiremos a consideração da Interface de controle de versão. A interface de arquivos (módulo FileIntf.pas) permite redefinir o sistema de arquivos de trabalho do IDE, o que possibilita escolher sua própria maneira de armazenar os arquivos (em campos Memo no servidor de banco de dados, por exemplo). A Interface de Edição (módulo EditIntf.pas) fornece acesso ao buffer de texto fonte, que permite analisar e gerar código, determinar e alterar a posição do cursor na janela do editor de código e controlar o realce da sintaxe do texto fonte.

Classes especiais fornecem interfaces para os componentes colocados no formulário (definindo o tipo de componente, obtendo referências a componentes pai e filho, acessando propriedades, passando foco, excluindo, etc.), para o próprio formulário e para o arquivo de recursos do projeto. A Interface de Edição também permite identificar os chamados notificadores de módulo que determinam a reação a eventos como alterar o código-fonte do módulo, modificar o formulário, renomear o componente, salvar, renomear ou excluir o módulo, alterar o recurso do projeto arquivo, etc. Tool Interface (módulo ToolIntf. pas) fornece aos desenvolvedores os meios para obter informações gerais sobre o estado do IDE e realizar ações como abrir, salvar e fechar projetos, e arquivos individuais, criando um módulo, obtendo informações sobre o projeto atual (o número de módulos e formulários, seus nomes, etc.), registrando sistema de arquivo, organização de interfaces para módulos individuais, etc. Além dos notificadores de módulo, a Interface de Ferramenta define notificadores de suplemento que notificam sobre eventos como abrir/fechar arquivos e projetos, carregar e salvar um arquivo de desktop de projeto, adicionar/excluir módulos de projeto, instalar/desinstalar pacotes, compilar um projeto, e em Ao contrário dos notificadores modulares, os notificadores suplementares permitem cancelar a execução de alguns eventos.

Além disso, a Interface de Ferramenta fornece um meio de acessar o menu principal do Delphi IDE, permitindo que você incorpore itens adicionais nele. Expert Interface (módulo ExptIntf.pas) é a base para a criação de Expert Advisors - módulos de software, incorporado ao IDE para expandir sua funcionalidade. Um exemplo de especialista é o Delphi Database Form Wizard, que gera um formulário para visualizar e modificar o conteúdo de uma tabela de banco de dados. Tendo definido a classe de especialistas, precisamos ter certeza de que o Delphi “aprende” sobre nosso especialista. Para isso, deve-se registrá-lo chamando o procedimento RegisterLibraryExpert, passando-lhe como parâmetro uma instância da classe expert. Como ilustração, vamos criar um especialista simples no estilo esStandard, que, quando o item de menu Delphi correspondente for selecionado, exibe uma mensagem de que está em execução. Como você pode ver na tabela acima, o estilo esStandard requer que seis métodos sejam substituídos:

Para que o expert seja “ativado”, deve-se selecionar o item de menu Component/Install Component ... , selecionar o módulo que contém o expert (no nosso caso exmpl_01.pas) na caixa de diálogo Browse, clicar em OK, e após compilar o pacote dclusr30.dpk no menu principal do Delphi na seção Ajuda, o item Simple Expert 1 deve aparecer, quando selecionado, a mensagem informativa “Standard Expert started!” aparece. Por que o Delphi coloca o item de menu especialista na seção Ajuda permanece um mistério. Se você não gostar do fato de o item de menu aparecer em qualquer lugar do Delphi, e não onde você quiser, a seguinte opção é possível: criar um add-in style expert, que elimina a criação automática do item de menu, e adicionar o item de menu “manualmente” usando a Interface de Ferramenta. Isso permitirá que você defina a localização do novo item no menu principal de maneira arbitrária.

Para adicionar um item de menu, é utilizada a classe TIToolServices - a base da Interface de Ferramenta - e as classes TIMainMenuIntf, TIMenuItemIntf que implementam interfaces para o menu principal do IDE e seus itens. A instância ToolServices da classe TIToolServices é criada pelo próprio IDE quando é inicializado. Observe que é responsabilidade do desenvolvedor liberar as interfaces para o menu principal do Delphi e seus itens. Ao longo do caminho, vamos complicar um pouco a carga funcional do Expert Advisor: quando seu item de menu for ativado, ele emitirá um certificado sobre o nome do projeto aberto em este momento no ambiente: Neste exemplo, o lugar central é ocupado pela função AddIDEMenuItem, que adiciona um item de menu ao menu principal do Delphi IDE. Como parâmetros, é passado o texto do novo item de menu, seu identificador, o identificador do item antes do qual o novo item é inserido, a representação simbólica da chave, que, juntamente com Tecla Ctrl pode ser usado para acesso rápido ao novo item e um manipulador de eventos correspondente à seleção do novo item. Adicionamos um novo item de menu à seção Exibir antes do item Relógios.

Agora vamos nos familiarizar com os notificadores. Vamos definir um add-in notificador que rastreie os momentos de fechamento/abertura de projetos e ajuste o campo que armazena o nome de acordo projeto ativo(Vou omitir a implementação de métodos que não foram alterados em comparação com o exemplo anterior para brevidade): Para implementar o notificador, definimos a classe TAddInNotifier, que é descendente de TIAddInNotifier, e substituímos o método FileNotification. O IDE chamará esse método toda vez que ocorrer um evento ao qual o notificador do suplemento seja capaz de responder (cada evento desse tipo é indicado pela constante do tipo TFileNotification correspondente). O campo Expert na classe TAddInNotifier é usado para comentários com um especialista (método TAddInNotifier.FileNotification). No destruidor do especialista, o registro do notificador é cancelado e o notificador é destruído. Agora vamos ilustrar o uso de notificadores modulares. Vamos criar um add-in expert que gere mensagens sobre cada ato de salvar um arquivo de projeto (por brevidade, não fornecemos a implementação dos métodos que já conhecemos): Neste exemplo, o add-in expert monitora eventos correspondentes a a abertura/encerramento de projetos.

Cada vez que um projeto é aberto, um notificador de módulo correspondente ao arquivo do projeto é registrado. Em termos de implementação, os notificadores modulares são semelhantes aos notificadores complementares: definimos uma classe TModuleNotifier que é descendente de TIModuleNotifier e substituímos seus métodos Notify e ComponentRenamed. O IDE chama o método Notify quando ocorrem determinados eventos relacionados a este módulo; dentro deste método, a reação a um determinado evento é determinada. O método ComponentRenamed é chamado quando o nome do componente que está no formulário do módulo é alterado. Observe que não usamos esse método, mas devemos substituí-lo, caso contrário, quando o nome do componente mudar, o método abstrato da classe base será chamado, o que leva a consequências imprevisíveis.

Registrar um notificador de módulo é um pouco mais complicado do que registrar um add-in de notificador: primeiro, obtemos a interface do módulo (TIModuleInterface) e, em seguida, registramos o notificador usando a interface do módulo. Quando o projeto é fechado, o notificador do módulo é cancelado (novamente usando TIModuleInterface) e o notificador é destruído. Em conclusão, mostraremos como você pode determinar a posição do cursor na janela do editor de código. Vamos criar um Expert Advisor que, quando o item de menu correspondente for selecionado, exibirá uma mensagem contendo o nome do arquivo ativo e a posição do cursor nele (a implementação apenas dos métodos essenciais para este exemplo é fornecida): Para determinar a posição do cursor, devemos receber a seguinte sequência de interfaces: interface do módulo (TIModuleInterface); interface do editor de código (TIEditorInterface); interface de visualização do módulo na janela do editor (TIEditView).

Se o arquivo ativo com o texto de origem (*.pas) estiver ativo ao selecionar o item do menu especialista, uma mensagem será exibida contendo o nome do arquivo ativo e a posição atual do cursor nele. Se o arquivo ativo não for um arquivo pas, nenhuma mensagem será emitida. O método GetCurrentFile da classe TIToolServices é usado para obter o nome do arquivo ativo. Isso conclui nossa discussão sobre maneiras de usar interfaces públicas. O CD-ROM contém o código fonte de todos os exemplos fornecidos. O CD-ROM também contém um exemplo mais complexo e estendido contendo um add-in expert que permite ao usuário marcar o código fonte dos módulos Delphi. Um guia rápido para instalar e usar o Bookmark Expert está contido no arquivo bkmrks97.htm. Assim, neste artigo, as interfaces públicas são discutidas em termos gerais e são dados exemplos de seu uso. Mais uma vez, graças à disponibilidade de códigos-fonte de interfaces abertas, você pode entender facilmente os detalhes que lhe interessam. Esperamos que a variedade de oportunidades interfaces abertas, lhe dará mais de uma ideia ousada e útil.