| 
							kr
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 «  : 11-02-2010 19:57 »   | 
								
								 | 
							  
							 
							  Подскажите пожалуйста как анимировать иконку в трее ? На форме анимация работает. А в трее нет. Где и чего нужно исправить? Может, кто подскажет ! Буду очень благодарен! unit Unit1;
  interface
  uses   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,   Dialogs, ImgList, Menus, ExtCtrls,ShellApi, StdCtrls;
  type   TForm1 = class(TForm)     ImageList1: TImageList;     Timer1: TTimer;     PopupMenu1: TPopupMenu;     Form11: TMenuItem;     Exit1: TMenuItem;     Button1: TButton;     procedure FormCreate(Sender: TObject);     procedure Timer1Timer(Sender: TObject);     procedure FormClose(Sender: TObject; var Action: TCloseAction);     procedure Exit1Click(Sender: TObject);     procedure PopupMenu1Popup(Sender: TObject);     procedure Form11Click(Sender: TObject);     procedure Button1Click(Sender: TObject);
    private     procedure WMSysCommand(var Msg: TWMSysCommand);message WM_SYSCOMMAND;     { Private declarations }   public    {Здесь мы объявлем процедуру, которая будет выполнятся каждый раз, когда на иконке будет происходит какое-либо событие (клик мышки и т.п.)}     procedure IconCallBackMessage( var Mess : TMessage ); message WM_USER + 100;     { Public declarations }   end;
  var   Form1: TForm1;   iconindex : Integer;
 
  implementation
  {$R *.dfm} // Отлавливаем момент если форма сворачивается,тогда выполнить что-либо? procedure TForm1.WMSysCommand; begin if Msg.CmdType = SC_MINIMIZE then //Сдесь делаем что нужно} Form1.Hide; else inherited; end;
  procedure TForm1.FormCreate(Sender: TObject); var nid : TNotifyIconData; begin {Добавляем иконку в трей при старте программы: Указываем параметры иконки,  для чего используем структуру TNotifyIconData.} with nid do begin //Размер все структуры cbSize := SizeOf( TNotifyIconData ); {Здесь мы указывает Handle нашей главной формы которая будет получать сообщения от иконки. } Wnd := Form1.Handle; //Идентификатор иконки uID := 0; {Обозначаем то, что в параметры входят: Иконка, сообщение и текст подсказки (хинта).} uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; {Здесь мы указываем, какое сообщение должна  высылать иконочка нашей главной форме, в тот момент, когда на ней (иконке)  происходят какие-либо события } uCallbackMessage := WM_USER + 100; StrPCopy(szTip,'Form1'); {Указываем на Handle иконки (изображения) (в данной случае берем  иконку основной формы приложения.} hIcon := Application.Icon.Handle; //Application.Icon.Handle; end; //Отпровляем иконку Трее Shell_NotifyIcon( NIM_ADD , @nid ); end;
  procedure TForm1.Timer1Timer(Sender: TObject); begin // Перерисовываем иконку ImageList1.GetIcon(iconindex, Application.Icon); iconindex := iconindex + 1; if iconindex > 1 then iconindex := 0; end;
  procedure TForm1.PopupMenu1Popup(Sender: TObject); begin SetForegroundWindow(Form1.Handle); end;
  procedure TForm1.IconCallBackMessage( var Mess : TMessage ); begin case Mess.lParam of WM_LBUTTONUP :  Form11Click(Form1);  //'левоя кнопка мыши' WM_RBUTTONUP : Form1.PopupMenu1.Popup(Mouse.CursorPos.x, Mouse.CursorPos.y); end; end;
  procedure TForm1.Form11Click(Sender: TObject); begin //Показываем главное окно Form1.Show; Form1.Activate; ShowWindow(Application.Handle, SW_HIDE); end;
  procedure TForm1.Exit1Click(Sender: TObject); begin Form1.Close end;
  procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); var nid : TNotifyIconData; begin with nid do begin {Удаляем иконку из трея. Параметры мы вводим для того, чтобы функция точно знала, какую именно иконку надо удалять. Обратите внимание, что здесь мы исползуем константу NIM_DELETE (удаление иконки).} cbSize := SizeOf( TNotifyIconData ); Wnd := Form1.Handle; uID := 0; uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP; uCallbackMessage := WM_USER + 100; hIcon := Application.Icon.Handle; end; Shell_NotifyIcon( NIM_DELETE, @nid ); end;
  procedure TForm1.Button1Click(Sender: TObject); begin Form1.Close end; end.
 
   
						 | 
					 
					
						
							
								
									 
									
										  Трее.7z (8.84 Кб - загружено 1156 раз.)
									  
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #1 : 12-02-2010 03:51 »   | 
								
								 | 
							  
							 
							в трее не бывает анимации - там надо по таймеру (или тактируя по иному) заменять картинку 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							RXL
							
						 | 
						
							
								  | 
								
									
									 « Ответ #2 : 12-02-2010 08:51 »   | 
								
								 | 
							  
							 
							Код очень плохо нечитается, но вроде как там по таймеру и сделано. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С. 
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									«  Ответ #3 : 12-02-2010 13:25 »    | 
								
								 | 
							  
							 
							procedure TForm1.Timer1Timer(Sender: TObject); begin // Перерисовываем иконку ImageList1.GetIcon(iconindex, Application.Icon); iconindex := iconindex + 1; if iconindex > 1 then iconindex := 0; end; по таймеру ты заменяешь иконку в приложении (Application.Icon), а кроме этого тебе надо здесь же обновить иконку в трее.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							glGizma
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #4 : 14-04-2010 07:37 »   | 
								
								 | 
							  
							 
							Не насилуйте мозг, используйте: JVCL / JvTrayIcon 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #5 : 14-04-2010 07:47 »   | 
								
								 | 
							  
							 
							glGizma, а кто такое JVCL / JvTrayIcon ? )) 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #6 : 14-04-2010 07:56 »   | 
								
								 | 
							  
							 
							Алексей1153++, это потомок безвременно почившей либы RxLib. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							glGizma
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #7 : 14-04-2010 08:37 »   | 
								
								 | 
							  
							 
							=) гугли вам помощь. Там есть всё, что нужно для счастья в среде программирования на Delphi. в общем работайте сами, рекомендую всем:  h**p://cdnetworks-kr-1.dl.sourceforge.net/project/jvcl/JVCL%203/JVCL%203.39/JVCL339CompleteJCL211-Build3536.zip
   
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
									« Последнее редактирование: 14-04-2010 08:42 от Алексей1153++ »
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #8 : 14-04-2010 11:59 »   | 
								
								 | 
							  
							 
							glGizma, вопрос был задан 2 месяца назад. стоит ли поднимать старую тему ради сомнительного совета ставить 100-меговую библиотеку с >50 компонентами вместо десятка строчек кода? 
  и что за говно по твоей ссылке? официальный сайт проекта - jvcl.jedi-vcl.org, а официальный дистрибутив 339 - это 75 мегабайт, а не 18.  
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							glGizma
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #9 : 15-04-2010 01:53 »   | 
								
								 | 
							  
							 
							x77 Мне вообще по-барабашке, можешь сидеть и рвать, хоть целыми днями, пупок, когда можно обойтись всё одним кликом да + ещё этого дистрибутива достаточно, это и есть офф пак, если умный такой, что же не_рулишь на форуме, а ток критикуешь. И неважно старая или новая тема, посетители всегда найдуцо. 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							glGizma
							 
								Гость 
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #10 : 15-04-2010 01:56 »   | 
								
								 | 
							  
							 
							х77 ты предлагал: (по таймеру ты заменяешь иконку), тока колхоз использует таймер, ты не_хуже меня понимаешь, что таймер для нубов да +ещё таймер забивает память, а ты через  мин 5-ть посмотри скоко он памяти закушает, так-что невариант твой вариант использовать, устаревший = я_б так даже сказал... 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							sss
							
								Специалист 
								
								 
								  Offline
								
								
								
								
							 
						 | 
						
							
								  | 
								
									
									 « Ответ #11 : 15-04-2010 02:10 »   | 
								
								 | 
							  
							 
							тормоза придумали трусы! А руль извращенцы! 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							 while (8==8)  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						| 
							Kivals
							
						 | 
						
							
								  | 
								
									
									 « Ответ #12 : 15-04-2010 04:40 »   | 
								
								 | 
							  
							 
							glGizma, Вот интересно - ты заглядывал в код рекламируемой тобой библиотеки? Если там эта функция есть - то она сделана по таймеру (я имею в виду таймер в понятии WinAPI, а не TTimer). Хотя TTimer это всего лишь удобная обертка вокруг таймера WinAPI. Так что не гони волну что "таймер забивает память". 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							Алексей++
							
								глобальный и пушистый 
								Глобальный модератор
								
								 
								  Offline
								
								Сообщений: 13
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #13 : 15-04-2010 05:01 »   | 
								
								 | 
							  
							 
							glGizma, хорош понтоваться. Делом займись. Хоть чем, что умеешь. Двор там подмети, бабушек вокруг светофора поводи 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	
		
		
			
				
					
						
							x77
							
								Модератор
								
								 
								  Offline
								Пол:   
								
								меняю стакан шмали на обратный билет с Марса.
								
								
								
								
								
							  
						 | 
						
							
								  | 
								
									
									 « Ответ #14 : 15-04-2010 12:44 »   | 
								
								 | 
							  
							 
							glGizma, ты сможешь это обосновать, что таймер через пять минут работы "закушает память"? 
						 | 
					 
					
						
							
								| 
								 | 
							 
								| 
								 | 
								
									 
									Записан
								 | 
							  
							 
							
						 | 
					 
				 
			 |  
		 
	 | 
	 |