![]()  | 
	
 
  | 
		
			
  | 	
	
	
		
		|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны | 
![]()  | 
	
	
| 
		 | 
	Опции темы | Поиск в этой теме | Опции просмотра | 
| 
		 
			 
			#1  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Доброго времени суток. В проекте есть "дочерняя", подчиненная форма (Height=1200 и Width=1600). На этой форме есть три панели Panel, несколько картинок Image и кнопку Button. При нажатии на кнопку Button срабатывает процедура закрытия формы: 
		
	
		
		
		
		
		
		
			Код: 
	... procedure TForm4.Button1Click(Sender: TObject); begin Form4.Close; end; ... Панель Panel1 отображает название формы - тоже не так важно. При нажатии на панель Panel2 написан следующий код: ... Код: 
	procedure TForm4.Panel2Click(Sender: TObject); begin if Image2.Left<800 then if Image3.Left<800 then ... if Image23.Left>587 then begin Panel3.Visible:=True; Panel3.Color:=clGreen; Panel3.Caption:='Да!' end else Panel3.Visible:=True; Panel3.Color:=clRed; Panel3.Caption:='Не-а' end; ... Картинки Image2, Image3,...,Image23 имеют следующий код (небольшое различие только в прописывании события MouseMove для определенной картинки Image): Код: 
	... procedure TForm4.Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button<>mbLeft then move:=false //если нажали не левой кнопкой, то перемещать не будем! else begin move:=true; x0:=x; y0:=y; end; end; procedure TForm4.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if move then begin image2.Left:=image2.Left+x-x0; image2.Top:=image2.Top+y-y0; end; end; procedure TForm4.Image2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:=false; end; procedure TForm4.Image3MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button<>mbLeft then move:=false //если нажали не левой кнопкой, то перемещать не будем! else begin move:=true; x0:=x; y0:=y; end; end; procedure TForm4.Image3MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if move then begin image3.Left:=image3.Left+x-x0; image3.Top:=image3.Top+y-y0; end; end; procedure TForm4.Image3MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:=false; end; ... lmikle: пользуемся тегами! При запуске проекта из главной формы открывается данная "дочерняя", подчиненная форма. Кнопка Button1 работает правильно, а при нажатии на панель Panel2: - не переместив ни одной картинки Image, появляется панель Panel1, но неправильно выбран цвет при правильном расположении картинок Image, т.е. красный clRed; - переместив хотя бы одну картинку Image, панель Panel1 не появляется совсем. Подскажите пожалуйста, что не так? Последний раз редактировалось lmikle, 22.11.2016 в 23:44.  | 
| 
		 
			 
			#2  
			
			
			
			
		 
		
		
	 | 
|||
		
		
  | 
|||
| 
	
	
		
			
			 Проблема, похоже, в этом коде (ну, если код представлен правильно): 
		
	
		
		
		
		
		
	
		
		
	
	
	Код: 
	procedure TForm4.Panel2Click(Sender: TObject); begin if Image2.Left<800 then if Image3.Left<800 then ... if Image23.Left>587 then begin Panel3.Visible:=True; Panel3.Color:=clGreen; Panel3.Caption:='Да!' end else Panel3.Visible:=True; Panel3.Color:=clRed; Panel3.Caption:='Не-а' end; ... Код: 
	if (Image2.Left<800) and (Image3.Left<800) and ... and (Image23.Left>587) then ... else ...  | 
| 
		 
			 
			#3  
			
			
			
			
		 
		
		
	 | 
||||
		
		
  | 
||||
| 
	
	
		
			
			 Можно упростить код, если удалить все обработчики жима по имиджам, взамен оставив только эту "троицу" 
		
	
		
		
		
		
			
		
		
		
		
		
			Код: 
	procedure TForm4.Image2MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin if button = mbLeft then // если нажали левой кнопкой, то перемещать будем! begin move:= true; x0:= X; y0:= Y; end; end; procedure TForm4.Image2MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var s: TImage absolute Sender; begin if move then s.SetBounds(s.Left+X-x0, s.Top+Y-y0, s.Width, s.Height); end; procedure TForm4.Image2MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin move:= false; end; Последний раз редактировалось Alegun, 23.11.2016 в 12:41.  |