Encerrar TrayIcon quando processo finalizado

17/01/2013

0

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á

Responder

Posts

18/01/2013

Paulo Fossá

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

Obrigado.
Responder

18/01/2013

Ricardo Araujo

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.
Responder

19/01/2013

Paulo Fossá

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.
Responder

21/01/2013

Paulo Fossá

E aí pessoal, mais alguém pode me ajudar?
Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar