Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.07.18;
Скачать: CL | DM;

Вниз

Позиция курсора?   Найти похожие ветки 

 
newUser   (2002-07-05 11:49) [0]

Как узнать что курсор покинул границы моей формы?


 
Skier ©   (2002-07-05 11:54) [1]

>newUser

Поставь обработчики на события MOUSEENTER и MOUSELEAVE

procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;

procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;


 
newUser   (2002-07-05 14:55) [2]

Впринципе все работает, но не так как хотелось бы. Сообщение:

procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;

срабатывает только когда пользователь кликнет на любом другом окне, т.е. переведет вокус, а
мне надо чтобы как только курсор вышел за границы формы я об этом сразу узнал.


 
Skier ©   (2002-07-05 15:10) [3]

>newUser
Не знаю как у тебя, но у меня всё работает без
всяких кликов на любом другом окне.
Давай подробней : в чём проблема ?


 
newUser   (2002-07-05 16:23) [4]

У меня обработчик этого сообщения:

(procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;)

вызывается только когда зажата любая из кнопок мыши.
Т.е. если с зажатой кнопкой мыши курсор вывести за пределы формы, то сработает обработчик.
А можно ли сделать чтобы не надо было зажимать кнопку?


 
Skier ©   (2002-07-05 16:27) [5]

>newUser
- Форма модальная ?
- Форма вызывается из DLL ?


 
newUser   (2002-07-05 16:42) [6]

Обычная форма, да и вообще все обычное.
Может покажешь на примере? Хотя делаю вроде все правильно.


 
Skier ©   (2002-07-05 16:51) [7]

>newUser

File|New Application

.DFM - файл


object Form1: TForm1
Left = 192
Top = 145
Width = 696
Height = 480
Caption = "Form1"
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = "MS Sans Serif"
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 120
TextHeight = 16
end


.PAS - файл


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;

type
TForm1 = class(TForm)
private
{ Private declarations }
procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

{ TForm1 }

procedure TForm1.CMMouseEnter(var Message: TMessage);
begin
WriteLn("Mouse Enter Message");
end;

procedure TForm1.CMMouseLeave(var Message: TMessage);
begin
WriteLn("Mouse Leave Message");
end;

end.


Только не забудь поставить флажок Generate console application
(Project|Options|Linker) Это для наглядности.


 
newUser   (2002-07-05 17:13) [8]

У меня все тоже самое, но надпись "Mouse Leave Message" то появится после вывода курсора с формы, то не. Вообщем когда захочет тогда и срабатывает обработчик.


 
Skier ©   (2002-07-05 17:22) [9]

>newUser
???



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

Текущий архив: 2002.07.18;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.01 c
8-58231
Shadow
2002-03-09 14:59
2002.07.18
Конвертация


1-58181
star
2002-07-05 13:12
2002.07.18
Как плавно прорисовать форму ?


14-58296
Sergey13
2002-06-21 11:32
2002.07.18
Предложение по организации форума


3-58005
Tutov Roman
2002-06-26 14:49
2002.07.18
При ччитывания поля таблицы возникает ошибка . Почему ?


1-58079
Stuart
2002-07-05 15:20
2002.07.18
Изменить ресурсы в exe-файле