Прежде чем задать  вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
| 1147 | 
                        
			
			  
			
				 Сообщение
					#1				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 Такая ситуация: 6 таймеров работают одновременно, у трех из них интервал 50 у остальных 70. При этом переходы между изображениями, которые меняют таймеры, сильно тормозят. Стоит включить 7й таймер, одновременно работающий с остальными с интервалом 70, торможение исчезает, хотя по логике, торможение должно возрасти...  В чем тут может быть причина? Можно ли избежать торможение изображений? 
			
			
					
		 | 
	
![]() ![]()  | 
	
| Unconnected | 
                        
			
			  
			
				 Сообщение
					#2				
			 
		 | 
	
        	
        		![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация:    24           	 | 
       
			
			 Как-то всё туманно... Как сделан "переход между изображениями", и какую роль там таймер играет? 
			
			-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.." 
					
		 | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#3				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			procedure TForm1.Timer1Timer(Sender: TObject); Сообщение отредактировано: 1147 -  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#4				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Ну, и что ты хочешь, чтоб не тормозило? У тебя лишние условия каждый раз проверяются. Либо сделай Case, это будет быстрее, и лишняя работа делаться не будет. Либо вообще запихай все свои изображения в массив и одним оператором показывай нужный элемент массива. 
			
			
					
		 | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#5				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 volvo, если не трудно, покажи пожалуйста на примере, как в моем случае можно использовать Case 
			
			
					
		 | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#6				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Вот так, например:
 
			
			
					
		procedure TForm1.Timer1Timer(Sender: TObject);  | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#7				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 можно сделать так чтобы за 1 шаг появлялось изображение 43 а 42 исчезало? Примерно это можно изобразить так: 
			
			
					
		1: image43.Visible:=true and image42.Visible:=false;Это нужно для осуществления циклической анимации, вроде стрелки часов Переделал все таймеры, но причина торможения кроется в чем-то другом.. Сообщение отредактировано: 1147 -  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#8				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			1: Но в таком случае - почему бы тебе не сделать то, что я предлагал вторым вариантом? Все TImage - элементы массива. И тогда твой обработчик таймера выродится вот в такой: procedure TForm1.Timer1Timer(Sender: TObject);  | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#9				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 как правильно описать массив? ImageArray: array[1..35] of .. Как здесь показать что нужно использовать изображения со первого по 35? 
			
			
					
		Сообщение отредактировано: 1147 -  | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#10				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			type Теперь можно обращаться к ImageArray. как я показал выше...  | 
	
| Client | 
                        
			
			  
			
				 Сообщение
					#11				
			 
		 | 
	
| 
        	
        		 Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация:    20           	 | 
       
			
			a:array [1..10] of TImage;Опаздал Сообщение отредактировано: Client -  | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#12				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 Насколько я понимаю, эта строка выбирает нужные изображения для массива:
 
			
			
					
		ImageArray[i] := FindComponent(Format('Image%d', [i + 1])) as TImage; 
 Но каким образом это происходит, если мне требуются изображения например image12...image85? В общем я не понял как взять конкретные изображения и заполнить ими массив.. Что такое image%d?  | 
	
| Client | 
                        
			
			  
			
				 Сообщение
					#13				
			 
		 | 
	
| 
        	
        		 Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация:    20           	 | 
       
			
			 ищет среди компонентов те, которые подходят по "шаблону". 
			
			
					
		А как пронумерованы у тебя Timage -ы и сколько их?  | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#14				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 вот я и не понял с этим шаблоном... У меня 6 таймеров, для каждого есть свои изображения. Timer1 содержит изображения 112, 245..264, Timer2 содержит 111, 225..244. И так для каждого таймера. Как шаблон найдет нужные для каждого таймера? 
			
			
					
		 | 
	
| Client | 
                        
			
			  
			
				 Сообщение
					#15				
			 
		 | 
	
| 
        	
        		 Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация:    20           	 | 
       
			
			 не в ту сторону пошел  
			
			
					
		это все делается для того, чтобы занести все TImage, которые есть на форме в массив. И уже работать с этим массивом. (чтобы индексация совпадала) т.е. пишешь мой_массив[111].свойствоа не Image111.свойствоЕсли не подходит сделать так, то замени условные на case и все Сообщение отредактировано: Client -  | 
	
| 1147 | 
                        
			
			  
			
				 Сообщение
					#16				
			 
		 | 
	
        	
        		![]() Бывалый ![]() ![]() ![]() Группа: Пользователи Сообщений: 205 Пол: Мужской Реальное имя: Евгений Репутация:    0           	 | 
       
			
			 То есть сначала создается общий массив со всеми изображениями, которые есть. затем я беру и обозначаю что массив а [112,245..264] это массив для таймера 1 к примеру, так? 
			
			
					
		 | 
	
| volvo | 
                        
			
			  
			
				 Сообщение
					#17				
			 
		 | 
	
| 
        	
        		 Гость  | 
       
			
			 Цитата вот я и не понял с этим шаблоном... У меня 6 таймеров, для каждого есть свои изображения. Timer1 содержит изображения 112, 245..264, Timer2 содержит 111, 225..244. И так для каждого таймера. Как шаблон найдет нужные для каждого таймера? Элементарно (для каждого таймера - свой массив изображений, с которыми именно этот таймер работает) :const Что, это нереально сложно? Мне не кажется... Цитата Если не подходит сделать так, то замени условные на case и все Опять будет "раздувание" программы. Этого в данном случае лучше избегать... При работе вот с такими массивами, как показано выше - достаточно будет всего лишь поменять размер массива и его содержимое, больше ничего меняться не будет. Если сделать Case - то будешь ползать по всей программе и искать где еще что поменять... | 
	
| Client | 
                        
			
			  
			
				 Сообщение
					#18				
			 
		 | 
	
| 
        	
        		 Профи ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 865 Пол: Мужской Реальное имя: Вячеслав Репутация:    20           	 | 
       
			
			 Цитата procedure TForm1.Timer1Timer(Sender: TObject); if ind<35 then Inc(ind) else ind:=0;Ну, для каждого таймера сделать проверку на границы, и все. Только, не забудь, что бы не получилось так, что 2 элемент массива не указывал на 5 (6,7,8...) имедж, а именно на Image2.  | 
	
| TarasBer | 
                        
			
			  
			
				 Сообщение
					#19				
			 
		 | 
	
        	
        		![]() Злостный любитель ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 755 Пол: Мужской Репутация:    62           	 | 
       
			
			 Я бы сделал один TImage и массив из TBitmap. 
			
			Код procedure TForm1.Timer1Timer(Sender: TObject); begin ind := (ind + 1) mod 35; Image1.Canvas.Draw(0, 0, BufBitmap[ind]); end; Как-то мне не нравится, когда сначала одно изображение гасят, потом другое показывают. Там не мерцает? И вообще, вместо TImage поставил бы TPaintBox (он легче), TPaintBox хоть и не умеет сам себя перерисовывать, но с таймером 50 это не проблема. --------------------  | 
	
![]() ![]()  | 
	
 
  | 
		Текстовая версия | 4.11.2025 17:49 |