ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Como verificar se TNotifyIconData foi criado?

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
junior103
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Julho de 2015
Mensagens: 204

MensagemEnviada: Sex Fev 17, 2017 2:00 pm    Assunto: Como verificar se TNotifyIconData foi criado? Responder com Citação

Boa tarde...
Tenho a procedure que cria o icone e que destroy ....
A que cria funciona normal segue o codigo:
Código:
procedure TForm3.CriaIcone;
var
   NotifyIconData: TNotifyIconData;
begin
   with NotifyIconData do begin
      cbSize:= SizeOf;
      Wnd:= AllocateHWnd(WMTrayIcon);
      uID:= 0;
      uCallbackMessage:= WM_TRAYICON;
      uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE;
      hIcon := GetClassLong(FmxHandleToHWND(Form3.Handle),GCL_HICONSM);
      szTip := 'Exemplo da utilização do TrayIcon';
   end;
   Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
   ShowWindow(FindWindow(nil,'IconeFiremonkey'),SW_HIDE);
end;


Mas o destroy icone não funciona
Segue o codigo:
Código:
procedure TForm3.DestroyIcone;
var
   NotifyIconData: TNotifyIconData;
begin
   NotifyIconData.cbSize:= SizeOf(TNotifyIconData);
   NotifyIconData.Wnd:= FmxHandleToHWND(Form3.Handle);
   NotifyIconData.uID:= 0;
   NotifyIconData.uFlags:= 0;
   Shell_NotifyIcon(NIM_DELETE, @NotifyIconData);
end;


E se eu chamar o criaicone ele cria mais um e maisum e mais um e assim todas as vezes que a procedure criaicone for chamada... preciso que crie apenas se ele não foi criado.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
strak2012
Colaborador
Colaborador


Registrado: Segunda-Feira, 13 de Janeiro de 2014
Mensagens: 1518
Localização: Maceió - AL

MensagemEnviada: Sex Fev 17, 2017 2:08 pm    Assunto: Responder com Citação

Recomendações:

Código:
var
   NotifyIconData: TNotifyIconData;


Como global e não local tal como:

Código:
type
  TForm3 = class(TForm)
  {...}
  public
    { Public declarations }
    NotifyIconData: TNotifyIconData; // esta será vista pelos metodos CriaIcone e DestroyIcone
  end;


Criando icone

Código:
procedure TForm3.CriaIcone;
begin
   with NotifyIconData do begin
      cbSize:= SizeOf;
      Wnd:= AllocateHWnd(WMTrayIcon);
      uID:= 0;
      uCallbackMessage:= WM_TRAYICON;
      uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE;
      hIcon := GetClassLong(FmxHandleToHWND(Form3.Handle),GCL_HICONSM);
      szTip := 'Exemplo da utilização do TrayIcon';
   end;
   Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
   ShowWindow(FindWindow(nil,'IconeFiremonkey'),SW_HIDE);
end;


Deletando icone

Código:
procedure TForm3.DestroyIcone;
begin
   Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); // NotifyIconData é global e ja possui informações do icone presente
end;

_________________
Tudo podemos quando tudo sabemos!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
junior103
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Julho de 2015
Mensagens: 204

MensagemEnviada: Sex Fev 17, 2017 2:14 pm    Assunto: Responder com Citação

strak2012 escreveu:
Recomendações:

Código:
var
   NotifyIconData: TNotifyIconData;


Como global e não local tal como:

Código:
type
  TForm3 = class(TForm)
  {...}
  public
    { Public declarations }
    NotifyIconData: TNotifyIconData; // esta será vista pelos metodos CriaIcone e DestroyIcone
  end;


Criando icone

Código:
procedure TForm3.CriaIcone;
begin
   with NotifyIconData do begin
      cbSize:= SizeOf;
      Wnd:= AllocateHWnd(WMTrayIcon);
      uID:= 0;
      uCallbackMessage:= WM_TRAYICON;
      uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE;
      hIcon := GetClassLong(FmxHandleToHWND(Form3.Handle),GCL_HICONSM);
      szTip := 'Exemplo da utilização do TrayIcon';
   end;
   Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
   ShowWindow(FindWindow(nil,'IconeFiremonkey'),SW_HIDE);
end;


Deletando icone

Código:
procedure TForm3.DestroyIcone;
begin
   Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); // NotifyIconData é global e ja possui informações do icone presente
end;


strak2012 , funcionou!!! Obrigado por me ajudar!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
junior103
Aprendiz
Aprendiz


Registrado: Quarta-Feira, 1 de Julho de 2015
Mensagens: 204

MensagemEnviada: Sex Fev 17, 2017 2:15 pm    Assunto: Responder com Citação

strak2012 escreveu:
Recomendações:

Código:
var
   NotifyIconData: TNotifyIconData;


Como global e não local tal como:

Código:
type
  TForm3 = class(TForm)
  {...}
  public
    { Public declarations }
    NotifyIconData: TNotifyIconData; // esta será vista pelos metodos CriaIcone e DestroyIcone
  end;


Criando icone

Código:
procedure TForm3.CriaIcone;
begin
   with NotifyIconData do begin
      cbSize:= SizeOf;
      Wnd:= AllocateHWnd(WMTrayIcon);
      uID:= 0;
      uCallbackMessage:= WM_TRAYICON;
      uFlags:= NIF_ICON or NIF_TIP or NIF_MESSAGE;
      hIcon := GetClassLong(FmxHandleToHWND(Form3.Handle),GCL_HICONSM);
      szTip := 'Exemplo da utilização do TrayIcon';
   end;
   Shell_NotifyIcon(NIM_ADD, @NotifyIconData);
   ShowWindow(FindWindow(nil,'IconeFiremonkey'),SW_HIDE);
end;


Deletando icone

Código:
procedure TForm3.DestroyIcone;
begin
   Shell_NotifyIcon(NIM_DELETE, @NotifyIconData); // NotifyIconData é global e ja possui informações do icone presente
end;


strak2012 , funcionou!!! Obrigado por me ajudar!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB