Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Вниз

Про мышку   Найти похожие ветки 

 
курсор   (2004-07-21 18:43) [0]

Как форма может определить что курсор мыши покинул её клиентскую область?


 
Gero ©   (2004-07-21 18:52) [1]

CM_MOUSELEAVE


 
grom   (2004-07-21 21:25) [2]

procedure TForm1.Timer1Timer(Sender: TObject);
var
 FormPos: TRect;
 CursorPos: TPoint;
begin
  GetCursorPos( CursorPos );
  FormPos := Rect( Form1.Left, Form1.Top,
                   Form1.Left + Form1.Width,
                   Form1.Top + Form1.Height );
  if PtInRect( FormPos, CursorPos ) then
     Form1.Caption := "Мышка над формой!"
  else
     Form1.Caption := "Мышка вне формы...";
end;


 
SelloutS   (2004-07-21 21:45) [3]

>grom
извращение =)


 
grom   (2004-07-21 21:57) [4]

это уж точно, но я пользовался им на первых порах


 
Юрий Зотов ©   (2004-07-21 22:14) [5]

> курсор мыши покинул её клиентскую область

См. WM_NCHITTEST


 
Огромное Кулясищще ©   (2004-07-21 22:31) [6]

> Как форма может определить что курсор мыши покинул её клиентскую область?

>grom   (21.07.04 21:25) [2]


procedure TForm1.Timer1Timer(Sender: TObject);
var
FormPos: TRect;
CursorPos: TPoint;
begin
 GetCursorPos( CursorPos );
 FormPos := Rect( Form1.Left, Form1.Top,
                  Form1.Left + Form1.Width,
                  Form1.Top + Form1.Height );

 if PtInRect( FormPos, CursorPos ) then
    Form1.Caption := "Мышка над формой!"
 else
    Form1.Caption := "Мышка вне формы...";
end;


А это клиентская область? Может использовать свойство ClientRect?


 
grom   (2004-07-22 09:20) [7]

определение клиентской области

FormPos:=Rect( ClientOrigin.x,ClientOrigin.y,
              ClientOrigin.x+ClientWidth,
              ClientOrigin.y+ClientHeight);


 
курсор   (2004-07-22 10:40) [8]

Отлично подошло использование CM_MOUSELEAVE.
Благодарю.


 
SelloutS   (2004-07-22 17:42) [9]

кста не знаю как у других но CM_MOUSELEAVE ужасно глючит =\... срабатывает 50/50...делаю так:


...
public
   procedure CMMouseLeave(var Msg: TMessage); message CM_MOUSELEAVE;
   { Public declarations }
...

procedure TForm1.CMMouseLeave(var Msg: TMessage);
begin
 Caption := "мышка вне формы";
 inherited;
end;


в чём проблемма?


 
Umak   (2004-07-25 07:08) [10]

Действительно CM_MOUSELEAVE не отрабатывает если на форме нет
ни одного WinControl
и по сути CM_MOUSELEAVE работает по принципу таймера как у grom


 
Umak ©   (2004-07-25 07:47) [11]

WM_MouseLeave работает всегда и быстро
var g_tme:TTRACKMOUSEEVENT;

при Сreate
with  g_tme do begin
 cbSize:=sizeof(TTRACKMOUSEEVENT);
 dwFlags:= TME_LEAVE;
 dwHoverTime:= 0;
 hwndTrack:= handle;
end;
TrackMouseEvent(g_tme);

в wm_mousemove вызываем
 TrackMouseEvent(g_tme);

ловим WM_MouseLeave

----
Если кто знает способ получше напишите, плиз, давно ищу!


 
Polevi ©   (2004-07-25 10:57) [12]

SetCapture + WM_MOUSEMOVE



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.08.08;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.035 c
1-1090794975
Konoko
2004-07-26 02:36
2004.08.08
Проблема с чтением строк


3-1089874541
Орехов Д.В.
2004-07-15 10:55
2004.08.08
Глюк с параметром запроса в Interbase


1-1090502261
RedLord
2004-07-22 17:17
2004.08.08
скока времени включен комп (функчия)


9-1082469550
Creep
2004-04-20 17:59
2004.08.08
Canvas


14-1089872625
menart
2004-07-15 10:23
2004.08.08
Борьба с мышами





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский