Mudar icon em tempo de excecução

26/11/2009

Olá, Estou precisando alterar o icone da aplicação e do TryIcon em tempo de execução.   Tentei usar os dois comandos abaixo mas não altera o icone da aplicação e nem do icone criado abaixo.       ImageList2.GetIcon(1,FormIntegrador.Icon);
    ImageList2.GetIcon(1,Application.Icon);   procedure TFormIntegrador.FormCreate(Sender: TObject);
begin     { Criando TrayIcon, e copiando Icone do Form }
  Icon.Handle := LoadIcon(HInstance, 'MAINICON');
  nid.cbSize := sizeof(nid);
  nid.wnd := Handle;
  nid.uID := 1; // Identificador do ícone
  nid.uCallBAckMessage := wm_IconMessage;
  nid.hIcon := Icon.Handle;
  nid.szTip := 'FormIntegrador';
  nid.uFlags := nif_Message or
    nif_Icon or nif_Tip;
  Shell_NotifyIcon(NIM_ADD, @nid);   Caption := 'Integração de Dados'; //+ Versao;
  // PageControl1.ActivePageIndex := 0 ;    //Application.OnException        := TrataErros ;
  Application.OnMinimize := Ocultar1Click;
  Application.OnRestore := Restaurar1Click;
  Application.Title := Caption;
  Application.HintHidePause := 5000;
end;     Att.. Ricardo  
Frigorifico Sa

Frigorifico Sa

Curtidas 0

Respostas

Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo, para mudar o icone da aplicação você faz da seguinte maneira,

Menu Project, opção View Source, e implementa a seguinte linha


program Project1;

uses
  Forms,
  Unit1 in 'Unit1.pas' ;

{$R *.res}

begin
  Application.Initialize;
  Application.Icon.LoadFromFile('C:\Icones\Icon.ico');
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

    Pois mudar o icone do executável, eu não vejo a possiblidade, pelo seguinte motivo, as informações de versão, compania, e até mesmo o proprio executável, ficam no arquivo .res, que é gerado junto com o executável, este por sua vez é compilado pelo delphi, e a alteração do seu icone, somente poderá ser feito pelo delphi, ou então pelo windows, clicando com o botão direito em cima dele, e definindo um outro icone, mas qual seria a sua necessidade d emudar o icone da executável ? Por que não faz isso na hora que gerar o executável(pelo delphi).
   Com relação ao TrayIcon, vou verificar e logo retornarei.

Um abraço

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/11/2009

Olá,   Na verdade acho que só o TryIcon Resolve.   Como a aplicação vai ficar minimizada rodando em BackGround é para o usuario saber quando a aplicação esta rodando algum processo.   Att.. Ricardo
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo, de uma olhada em um artigo que escrevi para devmedia estes dias

https://www.devmedia.com.br/articles/viewcomp.asp?comp=15168&;hl=*trayicon*

Ele irá lhe ensinar como usar o Trayicon, fazendo o efeito que você esta querendo.

Um abraço

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/11/2009

Wesley,     Sabe onde posso baixar o pacote? Não tenho ele aqui.     Att.. Ricardo  
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo,não entendi sua pergunta, pacote ? Como assim ? Seu delphi não tem o TrayIcon ? Qual é sua versão do delphi ?

Att,

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/11/2009

Olá, Wesley     Meu sistema não tem o TryIcon.    Delphi 7   Att.. Ricardo
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/11/2009

Wesley, Tenho o TryIcon sim, Desculpe pelo. Só como é delphi 7 não tem todas as propriedades que vc demonstrou no artigo.   Preciso da propriedade PopMenu e Icons.     Conhece algum outro componente ou uma solução?   Att.. Ricardo
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo,
  Vou preparar uma dica pra vc, peço que aguarde.

Um abraço,

Wesley Y
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo,

   COnsegui achar aqui uma unit que tem o TrayIcon, para delphi 7, adicione ela no seu projeto e irá funcionar com o código mais a baixo que vou te mandar


Unit para Download :
http://www.rwsolution.com.br/TrayIcon.zip

Implemente este código no oncreate do frmprincipal por exemplo :

Var
 x : TTrayIcon;
begin
 x := TTrayIcon.Create(Self);
 x.Icon.LoadFromFile('D:\Sis Quick Tips\Access.ico');
 x.PopupMenu := PopupMenu1; // Adicione um PopMenu na tua aplicação
 x.Visible := True;
 x.Show(True);



Um abraço

Wesley Y
GOSTEI 0
Frigorifico Sa

Frigorifico Sa

26/11/2009

Wesley,   Funcionou.   Pode encerrar.   Muito Obrigado.   Att.. Ricardo      
GOSTEI 0
Wesley Yamazack

Wesley Yamazack

26/11/2009

Olá amigo, que bom que pude ajudar em mais um.

Forte abraço

Wesley Y
GOSTEI 0
POSTAR