Страница: 1 | 
		
		 
			   
			 
			 
			 
			 Страница: 1 | 
 
			
 
  
		
     
  
    
Вопрос: UserControl
     
    
Добавлено: 26.11.06 18:41
     
      
  
				
			  
					 
			
				 
    
		
       
    
Автор вопроса:  
     Vit | Web-сайт: www.home-soft.jino-net.ru
 Vit | Web-сайт: www.home-soft.jino-net.ru
      
       
  
Вариант 1
 
    
    With UserControl
        If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
            ReleaseCapture
            RaiseEvent MouseOut()
'	    ...
        Else
            SetCapture .hWnd
            RaiseEvent MouseMove(Button, Shift, X, Y)
'	    ...
        End If
    End With
End Sub
Вариант 2
    With UserControl
        If X < 0 Or X > .ScaleWidth Or Y < 0 Or Y > .ScaleHeight Then
            RaiseEvent MouseOut()
'	    ...
        Else
            RaiseEvent MouseMove(Button, Shift, X, Y)
'	    ...
        End If
    End With
End Sub
Описываю проблему:
 У меня на контроле я использую только один элемент - Label.
При коде Вариант 1 событие MouseMove и MouseOut обрабатываются правильно, т.е. даже при быстром перемещении курсора событие MouseOut успевает сработать, но обработка события Label1_Click(), находящего в контроле происходит со сторого раза, как и остальные события контролов. Поясню, это событие срабатывает со второго нажатия на котрол.
Если использовать код Вариант 2 всё нормально, кроме обработки X и Y, т.е. при быстром перемещении мыши, код не успевает сработать.
Что можно сделать?
				
		
		
					 
			
				 
  
		
     
  
    
Ответы
     
    
Всего ответов: 5
     
      
  
		
	  
			 
	
		 
    
       
    
Номер ответа: 1 
      
Автор ответа: HACKER
 HACKER








 
Разработчик Offline Client
Вопросов: 236
Ответов: 8362
      
 Профиль |  | #1
       
Добавлено:  26.11.06 20:03
       
    
       
  
Создать таймер, в таймере api фциями GetCursorPos получать координаты мыши и сравнивать их с координатами юзерконтрола...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 2 
      
Автор ответа: -АлександР-
 -АлександР-

Вопросов: 55
Ответов: 1008
      
 Web-сайт:  
 Профиль |  | #2
      
Добавлено:  26.11.06 20:51
       
    
       
  
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 3 
      
Автор ответа: LamerOnLine
 LamerOnLine



ICQ: 334781088 
Вопросов: 108
Ответов: 2822
      
 Профиль |  | #3
       
Добавлено:  27.11.06 11:11
       
    
       
  
Попробуй STATIC, MouseHover, MouseLeave, ну и сабкласс. Геморно, но все же не таймер. Может и не поможет, если тут байда с фокусом...
 
    
		
	  
			 
	
		 
    
       
    
Номер ответа: 4 
      
Автор ответа: Vit
 Vit








Вопросов: 68
Ответов: 62
      
 Web-сайт:  
 Профиль |  | #4
      
Добавлено:  27.11.06 17:50
       
    
       
  
 
    
Что за STATIC? Вариант с таймером я рассматривал, но отказался в силу того, что экземплятов котрола будет много.
Буду думать...
		
	  
			 
	
		 
    
       
    
Номер ответа: 5 
      
Автор ответа: EROS
 EROS




Вопросов: 58
Ответов: 4255
 Профиль |  | #5
       
Добавлено:  27.11.06 18:19
       
    
       
  
Я как то лет 300 назад, делал пример MouseOut.. Он так и называется, и где то в примерах на этом сайте он есть. Посмотри, может что полезного оттуда выдернешь.. Хотя я уже даже и не помню как там все делал.. (( давно это было..