Encerrar TrayIcon quando processo finalizado

Delphi

17/01/2013

Boa tarde pessoal,

tenho um programa em Delphi que possui um TraIcon. No código tenho a seguinte situação para manter este programa em execução após ser clicado no botão fechar (o programa só é encerrado se clicado no TrayIcon e escolhido a opção finalizar):

Formulário:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
Hide;
end;

PoupMenu ligado ao TrayIcon
Fecha por definitivo
procedure TForm1.Fecha1Click(Sender: TObject);
begin
Terminate;
TrayIcon1.Free;
end;

Restaura
procedure TForm1.Abre1Click(Sender: TObject);
begin
Show;
end;

Isto esta funcionando perfeitamente. Meu problema é que quando é finalizado o processo do programa, o ícone do TrayIcon ainda permanece ao lado do relógio, bastando passar o cursor do mouse sobre ele para que o mesmo suma da tela, visto que o programa já foi finalizado e não precisa aparecer mais este ícone.

Vocês sabem se existe alguma maneira de interpretar o fim de minha aplicação quando feita via processo, por exemplo finalizei o processo do programa, eu tenho como saber este momento na programação?

Desde já agradeço.
Paulo Fossá

Paulo Fossá

Curtidas 0

Respostas

Paulo Fossá

Paulo Fossá

17/01/2013

Ninguém pessoal? Preciso muito desta solução!

Obrigado.
GOSTEI 0
Ricardo Araujo

Ricardo Araujo

17/01/2013

Boa tarde !

Fiz um exemplo usando o Delphi 2010, estou enviando os código espero ter ajudado.
Qualquer coisa meu email é : rbbarreto@hotmail.com



unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, AppEvnts, ExtCtrls, Menus, ImgList;

type
TForm1 = class(TForm)
TrayIcon1: TTrayIcon;
ApplicationEvents1: TApplicationEvents;
ImageList1: TImageList;
PopupMenu1: TPopupMenu;
Exibir1: TMenuItem;
FinalizarSistema1: TMenuItem;
procedure ApplicationEvents1Minimize(Sender: TObject);
procedure TrayIcon1DblClick(Sender: TObject);
procedure Exibir1Click(Sender: TObject);
procedure FinalizarSistema1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ApplicationEvents1Minimize(Sender: TObject);
begin
Hide;
TrayIcon1.Visible := not Visible;
TrayIcon1.ShowBalloonHint;
end;

procedure TForm1.Exibir1Click(Sender: TObject);
begin
Show;
TrayIcon1.Visible := not Visible;
end;

procedure TForm1.FinalizarSistema1Click(Sender: TObject);
begin
Application.Terminate;
end;

procedure TForm1.TrayIcon1DblClick(Sender: TObject);
begin
Show;
TrayIcon1.Visible := not Visible;
end;

end.
GOSTEI 0
Paulo Fossá

Paulo Fossá

17/01/2013

Bom dia rbbarreto, Obrigado pela atenção
fera, desta forma ainda fica o ícone do TrayIcon quando finalizo o processo do programa pelo Gerenciador de Tarefas.

Eu tinha que identificar o momento que o processo é finalizado e dar um TrayIcon.Free, eliminando assim o ícone da barra de tarefas o mesmo.
GOSTEI 0
Paulo Fossá

Paulo Fossá

17/01/2013

E aí pessoal, mais alguém pode me ajudar?
GOSTEI 0
POSTAR