Encerrar TrayIcon quando processo finalizado
17/01/2013
0
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á
Posts
18/01/2013
Ricardo Araujo
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.
19/01/2013
Paulo Fossá
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.
Clique aqui para fazer login e interagir na Comunidade :)