Explicação detalhada da classe Tapplication em Delphi TApplication é o tipo de aplicação Delphi. Esta classe herda de TComponent e é declarada na unidade Forms. E existe um objeto público Application no Forms. Seus métodos e propriedades incluem operações e propriedades básicas estabelecidas, como criação, execução e destruição de aplicativos no sistema operacional Windows, simplificando assim a interface entre o usuário e o ambiente Windows ao escrever aplicativos Windows em Delphi. TApplication encapsula as quatro funções a seguir: 1. Processamento de mensagens do Windows. 2. Aceleração de menu e processamento de teclado. 3. Tratamento de exceções. 4. Ajuda on-line contextual. A seguir, apresentaremos as propriedades, métodos e eventos comumente usados no TApplication. 1. Atributo 1. 1 atributo Ativo Atributo Ativo indica se a aplicação está ativa e tem foco. A definição é a seguinte: PRperty Active: Boolean Active é uma propriedade somente leitura. Active é True quando o aplicativo está ativo, False caso contrário. O construtor de TApplication define Active como True. Se uma janela ou aplicativo estiver em foco, o aplicativo estará ativo. O aplicativo atual fica inativo quando a janela de outro aplicativo fica ativa. Quando o aplicativo é fechado, o destruidor de TApplication define Active como False. Na aplicação, pode-se utilizar um temporizador (TTimer) para verificar o valor do atributo Active para determinar se a aplicação atual está ativa para que o processamento adequado possa ser feito. As operações especificadas também podem ser definidas no evento OnActive e no evento OnDeactive. 1.2 Propriedade DialogHandle A propriedade DialogHandle fornece um mecanismo para aplicações Delphi usarem caixas de diálogo não-Delphi. A definição é a seguinte: propriedade DialogHandle: HWnd Ao usar a função API CreateDialog para criar uma caixa de diálogo não modal, você precisa usar DialogHandle e visualizar as mensagens no loop de mensagens do aplicativo para executar as operações correspondentes. Por exemplo, quando uma caixa de diálogo sem janela restrita recebe uma mensagem de ativação (WM_NCACTIVATE), seu identificador pode ser atribuído a DialogHandle e quando a caixa de diálogo recebe uma mensagem de desativação, DialogHandle é definido como 0. 1.3 Atributo ExeName O atributo ExeName contém o nome do arquivo executável do aplicativo e as informações do caminho. É definido da seguinte forma: propriedade ExeName: string ExeName é uma propriedade somente leitura. Use ExeName para obter o nome do arquivo executável do aplicativo. Este é um atributo muito útil. Por exemplo, ao executar o aplicativo f:/media/myapp.exe no CD, pode ser necessário acessar os arquivos no diretório f:/media/data/ ou determinar a letra da unidade onde o aplicativo está localizado. Neste momento, você pode usar as funções ExtractFilePath e ExtractFileName fornecidas pelo Delphi para analisar o atributo ExeName e obter as informações necessárias. 1.4 Atributo Handle O atributo Handle fornece acesso ao handle da janela principal da aplicação. A definição é a seguinte: propriedade Handle: HWND A propriedade Handle precisa ser usada ao chamar uma função de API do Windows que requer um identificador de janela pai. Por exemplo, uma biblioteca de vínculo dinâmico (DLL) em um aplicativo pode precisar de um identificador de janela pai para que possa aparecer e ser colocada em primeiro plano. Utilize Application.Handle para formar diversas janelas da aplicação, para que essas janelas possam ser minimizadas, restauradas, habilitadas ou desabilitadas na aplicação. Nota: Ao escrever uma biblioteca de vínculo dinâmico que usa formulários VCL, o identificador da janela principal no programa principal em execução deve ser atribuído à propriedade Application.Handle da biblioteca de vínculo dinâmico. Isso faz com que o formato da biblioteca de vínculo dinâmico se torne parte do aplicativo principal. É importante ressaltar que você nunca deve atribuir um valor a Application.Handle em uma aplicação EXE. 1.5 Atributo HelpFile O atributo HelpFile especifica o nome do arquivo usado pela aplicação para exibir o conteúdo da ajuda. A definição é a seguinte: propriedade HelpFile: string Utilizar HelpFile é para que a aplicação tenha um arquivo de ajuda utilizando o sistema de ajuda padrão do Windows; O Windows exibe o arquivo de Ajuda especificado pela propriedade HelpFile. Para que seu aplicativo consiga isso, você deve fornecer à propriedade HelpFile um valor de nome de arquivo em tempo de execução ou especificar um arquivo de ajuda na página Aplicativo da caixa de diálogo Projeto|Opções em tempo de design. Por padrão, HelpFile é uma string vazia ('') e os métodos de ajuda do aplicativo ignoram todas as tentativas de exibir ajuda. Se HelpFile contiver algum conteúdo, o método do tópico de Ajuda abrirá o sistema de Ajuda do Windows para fornecer ajuda online com base no nome do arquivo. Nota: Se o arquivo de Ajuda da janela ativa for especificado, esse arquivo será exibido preferencialmente ao arquivo de Ajuda do aplicativo. 1.6 Dica de Atributo A Dica de Atributo especifica a sequência de texto que aparece na caixa Dica de Ajuda. A definição é a seguinte: propriedade Hint: string A propriedade TApplication.Hint é o valor Hint do controle ou item de menu pelo qual o mouse está se movendo. Este atributo também pode receber um valor de string que fornece ação, erro ou outras informações ao usuário. Portanto, o uso da propriedade Hint também pode: transferir informações de prompt do controle para outra área de exibição, por exemplo, exibir o prompt na barra de status por meio do manipulador de eventos OnHint. Neste momento, o atributo Hint é lido. Descreva resumidamente o estado do aplicativo quando ele está executando uma ação. Neste momento, o atributo Hint está definido. O prompt de ajuda aparece quando ocorre o evento OnHint. Portanto, mesmo que a propriedade Hint de TApplication receba o título da barra de status, por exemplo, o título do controle da barra de status exibe o valor da string atual da propriedade Hint, ele deve ser atribuído ao evento OnHint. A sequência de dicas consiste em duas partes: dica curta e dica longa. Prompts curtos são usados para prompts pop-up concisos; prompts longos e prompts curtos são separados por uma barra vertical "|" e são usados para exibir informações de prompt mais detalhadas na barra de status. Você pode usar as funções de string GetShortHint e GetLongHint fornecidas nos controles da unidade para obter dicas curtas e longas do atributo Hint. Nota: Quando uma aplicação fornece informações ao usuário sobre a ocorrência de um evento configurando a propriedade Hint, deve-se lembrar que por padrão, quando o mouse passa sobre um controle, a string Hint é redefinida para o valor da propriedade Hint do controle. 1.7 Propriedade HintHidePause A propriedade HintHidePause especifica o intervalo de tempo antes que o prompt de ajuda seja ocultado antes que o mouse seja afastado do controle ou item de menu. É definido da seguinte forma: propriedade HintHidePause: Integer; Use HintHidePause para especificar o tempo de espera em milissegundos. Esta propriedade é definida como 2.500 milissegundos (2,5 segundos) no construtor de TApplication. A dica de ajuda para um controle ou item de menu é especificada na propriedade Hint. Nota: Por padrão, o valor de HintHidePause deve ser predeterminado como 3 a 5 vezes o valor do atributo HintPause. 1.8 Propriedade MainForm A propriedade MainForm identifica exclusivamente o formulário principal da aplicação. É definido da seguinte forma: propriedade MainForm: TForm O formulário especificado pela propriedade MainForm não é necessariamente igual à janela principal da aplicação. O valor da propriedade MainForm deve ser o primeiro formulário entre todos os formulários criados pelo método CreateForm, mas o formulário pode não ser a janela principal da aplicação. Ao criar um novo projeto, o valor do atributo MainForm é automaticamente definido como Form1. Em tempo de design, você pode especificar um dos vários formulários como MainForm através da página Formulários na caixa de diálogo Projeto|Opções. A propriedade MainForm não pode ser modificada em tempo de execução porque a propriedade é somente leitura. O formulário principal é o primeiro formulário criado pelo tema do aplicativo. A aplicação termina quando o formulário principal é fechado. Em um aplicativo, você pode chamar o método Application.MainForm.Close para encerrar o aplicativo. Você pode obter os valores de propriedades como Application.MainForm.Top e Application.MainForm.Left para determinar a posição e o tamanho do atual. janela ativa. 1.9 Propriedade ShowMainForm A propriedade ShowMainForm determina se o formulário principal deve ser exibido quando a aplicação for iniciada. É definido da seguinte forma: propriedade ShowMainForm: Boolean A aplicação utiliza a propriedade ShowMainForm para controlar se e quando exibir seu formulário principal. O construtor de TApplication define ShowMainForm como True. Por padrão será exibido o formulário principal, conforme especificado na propriedade MainForm. Se precisar ocultar o formulário principal quando o aplicativo for iniciado, você deve definir ShowMainForm como False antes de chamar Application.Run no arquivo de projeto principal e certificar-se de que o valor da propriedade Visible do formulário principal seja False. Isso é útil em muitas implementações de servidores de automação OLE, como ocultar o formulário principal do programa do servidor ao iniciar o serviço de automação. Além disso, caso seja necessário exibir uma imagem flash (Flash) ao iniciar a aplicação e fazer alguns preparativos para o ambiente da aplicação, e também precisar desabilitar a exibição do formulário principal, isso também pode ser feito utilizando o atributo ShowMainForm. Por exemplo, quando o Delphi é iniciado, a exibição do formulário principal é desativada. 1.10 Atributo Terminado O atributo Terminado informa se o programa recebeu a mensagem WM_QUIT do Windows que encerra o programa. A definição é a seguinte: propriedade Terminated: Boolean; Terminated é uma propriedade somente leitura. Esta propriedade é usada principalmente ao chamar o método ProcessMessages para que o aplicativo não precise parar de tentar processar mensagens do Windows. Quando o método ProcessMessages receber a mensagem WM_QUIT, Terminated será definido como True. Aplicações Delphi sempre recebem a mensagem WM_QUIT porque o formulário ou aplicação principal está fechado ou porque o método Terminate é chamado. Quando um aplicativo executa uma operação altamente intensiva que consome muitos recursos do sistema, o método Application-on.ProcessMessages deve ser chamado periodicamente e a propriedade Application.Terminated deve ser verificada para determinar se a operação precisa ser encerrada para encerrar o aplicativo . 1.11 Propriedade UpdateFormatSettings A propriedade UpdateFormatSettings especifica se a aplicação atualiza automaticamente as configurações de formato quando o usuário altera a configuração do sistema. Definido da seguinte forma: propriedade UpdateFormatSettings: Boolean Usando a propriedade UpdateFormatSettings o aplicativo pode controlar a atualização automática das configurações de formato. O construtor de TApplication define esta propriedade como True. A propriedade UpdateFormatSett-ings será verificada quando a aplicação receber a mensagem WM_WININICHANGE. Recomenda-se usar as configurações de formato padrão, que são as configurações locais do Windows. Você pode definir UpdateFormatSe-ttings como False para evitar alterar as configurações de formato durante a execução do aplicativo Delphi. 1.12 Atributo UpdateMetricSettings Atributo UpdateMetricSettings indica se as configurações relacionadas devem ser atualizadas, como fonte da janela de prompt e título do ícone. A definição é a seguinte: propriedade UpdateMetricSettings: Boolean A propriedade UpdateFormatSettings indica se as alterações nas configurações, como fonte da janela de prompt e título do ícone no sistema, são refletidas nas alterações nas configurações relacionadas no aplicativo. O construtor de TApplication define o valor inicial de UpdateMetricSettings como True. 2. Método 2.1 Método BringToFront Método BringToFront define a janela ativa mais recentemente no aplicativo na frente de todas as janelas da área de trabalho. Sua definição é a seguinte: procedimento BringToFront Utilize o método BringToFront para encontrar a janela ativa mais recente pertencente ao formulário principal e trazê-la para frente. O método BringToFront também pode testar e ver se uma janela está visível (Visível) e válida (Ativada) antes de se tornar a janela mais frontal. Por exemplo, quando um aplicativo recebe mensagens, pode ser necessário ativar um manipulador especializado e colocá-lo em primeiro plano na área de trabalho do Windows. Neste momento, você pode chamar o método Application.BringToFront para conseguir isso. 2.2 Método CreateForm Método CreateForm é usado para criar um novo formulário (formulário). É definido da seguinte forma: procedure CreateForm(FormClass: TFormClass; var Reference); As aplicações Delphi sempre chamarão o método CreateForm. Portanto, raramente é necessário que os programadores chamem o método CreateForm diretamente. Um projeto Delphi típico inclui uma ou mais chamadas ao método CreateForm na parte principal do código do projeto e controla automaticamente a criação do formulário ao usar o designer de formulários. Você também pode chamar o método CreateForm em tempo de execução para criar um formulário dinamicamente. O método CreateForm cria um novo formulário especificado com base no parâmetro FormClass e atribui o formulário ao parâmetro variável Reference. O proprietário do formulário recém-criado é o objeto Application. O aplicativo usará como padrão o primeiro formulário criado chamando CreateForm como o formulário principal do projeto. 2.3 Método HandleException O método HandleException fornece um identificador padrão para exceções de aplicação. É definido da seguinte forma: procedimento HandleException(Sender: TObject); O método HandleException é útil para autores de componentes específicos porque pode gerar um evento que não precisa responder a mensagens do Windows. Você pode usar o manipulador de eventos OnException em seu aplicativo para controlar outras operações de exceção no código personalizado. No código da aplicação, se a exceção ignorar todos os blocos try, a aplicação chamará automaticamente o método HandleE-xception e exibirá uma caixa de diálogo indicando que ocorreu um erro. A menos que o objeto de exceção seja EAbort, então Han-dleException chamará o identificador OnException (se existir), caso contrário, ShowException será chamado para exibir uma caixa de diálogo solicitando um erro. 2.4 Método UhookMainWindow O método UhookMainWindow é utilizado para liberar o programa travado no formulário principal pelo método HookMainWindow. A definição é a seguinte: type TWindowHook = function(var Message: TMessage): Boolean do objeto; procedimento UnhookMainWindow(Hook: TWindowHook); Especifique o procedimento da caixa de diálogo no parâmetro Gancho. O tipo TwindowHook é o parâmetro para chamar o método HookMainWindow. Este parâmetro é o ponteiro do método para chamar o programa de diálogo em uma caixa de diálogo não-Delphi. Os programas de diálogo são semelhantes aos programas de janela, pois processam mensagens para caixas de diálogo, mas a sintaxe é diferente. 3. Evento 3.1 Evento OnActivate O evento OnActivate ocorre quando a aplicação se torna ativa. A definição é a seguinte: tipo TNotifyEvent = procedimento (Sender: TObject) do objeto; propriedade OnActivate: TNotifyEvent Utilize o evento OnActive para escrever um manipulador de eventos para especificar o processamento especial quando a aplicação se tornar ativa. Um aplicativo do Windows se torna ativo quando é executado inicialmente ou quando seu foco é transferido de volta para o aplicativo atual a partir de outro aplicativo do Windows. 3.2 Evento OnDeactivate O evento OnDeactivate ocorre quando a aplicação fica inativa. É definido da seguinte forma: tipo TNotifyEvent = procedimento (Sender: TObject) do objeto; propriedade OnDeactivate: TNotifyEvent O evento OnDeactive pode ser acionado imediatamente antes da aplicação ficar inativa, completando assim o processamento especial especificado no manipulador de eventos. O evento OnDeactive do aplicativo atual ocorre quando o usuário faz a transição do aplicativo atual para outro aplicativo. 3.3 Evento OnException O evento OnException ocorre quando ocorre uma exceção sem tratamento na aplicação. É definido da seguinte forma: tipo TExceptionEvent = procedimento (Sender: TObject; E: Exception) do objeto; propriedade OnException: TExceptionEvent Você pode usar o evento OnException para alterar a ação padrão quando ocorre uma exceção sem manipulador na aplicação. No método TApplication.HandleException, o manipulador de eventos OnException é chamado automaticamente. O evento OnException é usado apenas para tratar exceções que ocorrem durante o processamento de mensagens. Exceções que ocorrem antes ou depois da execução de Application.Run não causarão a ocorrência do evento OnException. Se uma exceção for ignorada no bloco try do código do aplicativo, o aplicativo chamará automaticamente o método HandleException. A menos que o objeto de exceção seja um EAbort, HandleException chamará o identificador OnException (se existir), caso contrário, ShowException será chamado para exibir uma caixa de diálogo solicitando um erro. O tipo TExceptionEvent é o tipo do evento OnException, que aponta para um método para tratar exceções na aplicação. O parâmetro Sender é o objeto que lança a exceção e o parâmetro E é o objeto de exceção. 3.4 Evento OnHelp O evento OnHelp ocorre quando a aplicação recebe uma solicitação de ajuda. A definição é a seguinte: type THelpEvent = function (Command: Word; Data: Longint; var CallHelp: Boolean): Boolean do objeto; propriedade OnHelp: THelpEvent para escrever um manipulador de eventos para concluir o processamento especial quando houver uma solicitação; para obter ajuda. O método HelpContext e o método HelpJump geram automaticamente o evento OnHelp. Defina CallHelp como True para permitir que o VCL chame o WinHelp após a ocorrência do evento; defina CallHelp como False para evitar que o VCL chame o WinHelp. Todos os métodos relacionados à ajuda em aplicações Delphi passam pelo evento OnHelp. WinHelp é chamado somente quando o parâmetro CallHelp no evento OnHelp retorna True ou quando o evento OnHelp não está atribuído a um identificador válido. 3.5 Evento OnHint Quando o ponteiro do mouse se move através de um controle ou item de menu e o controle ou item de menu pode exibir um prompt de ajuda, ocorre o evento OnHint. A definição é a seguinte: tipo TNotifyEvent = procedimento (Sender: TObject) do objeto; propriedade OnHint: TNotifyEvent O manipulador de eventos escrito com OnHint pode executar a operação especificada quando o evento OnHint ocorre. Quando o usuário posiciona o ponteiro do mouse sobre um controle e o valor da propriedade Hint do controle não é uma string vazia (''), ocorrerá o evento OnHint. O evento OnHint geralmente é usado para exibir o valor da propriedade Hint de um controle ou item de menu como o título de um controle de painel (como TStatusBar), portanto, o painel é usado como barra de status. Quando o evento OnHint ocorre, o atributo Hint geralmente é especificado como uma dica de ajuda e uma dica mais longa exibida em outro lugar. 3.6 Evento OnIdle O evento OnIdle ocorre quando a aplicação fica ociosa. A definição é a seguinte: tipo TIdleEvent = procedimento (Sender: TObject; var Done: Boolean) do objeto; propriedade OnIdle: TIdleEvent Use OnIdel para escrever um manipulador de eventos para concluir a operação especificada quando a aplicação estiver ociosa. Um aplicativo fica ocioso quando não está executando nenhum código. Por exemplo, um aplicativo fica ocioso enquanto aguarda a entrada do usuário. O tipo TIdelEvent é o tipo de evento OnIdel, que aponta para um método que é executado quando o aplicativo está ocioso. O objeto TIdelEvent possui uma variável Done cujo padrão é True. Quando Done for True, a função da API do Windows WaitMessage será chamada quando OnIdel retornar. WaitMessage faz com que outros aplicativos obtenham foco de controle até que uma nova mensagem apareça na fila de mensagens do aplicativo. Quando o parâmetro Done for False e a aplicação não estiver ocupada, a aplicação não permitirá que outras aplicações obtenham foco de controle. Quando a aplicação fica ociosa, o evento OnIdel ocorre apenas uma vez e o próximo evento OnIdel pode não ocorrer até que o parâmetro Done seja definido como True. Definir Done como False pelo aplicativo elimina contagens erráticas de tempo de CPU que podem afetar o desempenho geral do sistema. 3.7 O evento OnMessage é gerado quando a aplicação recebe uma mensagem WINDOWS. Ele é definido da seguinte forma: tipo TMessageEvent = procedimento (var Msg: TMsg; var Handled: Boolean) da propriedade OnMessage: TmessageEvent é utilizado para receber mensagens WINDOWS. pode receber todas as mensagens enviadas pelo programa para o WINDOWS. Este evento é gerado quando a aplicação recebe uma mensagem. A variável Msg é do tipo de mensagem WINDOWS.