Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.012 c
4-58366
SergeyDon
2002-05-16 10:08
2002.07.18
Новый день?


7-58332
Max
2002-03-11 12:19
2002.07.18
Учетная запись


1-58043
Коля
2002-07-08 00:54
2002.07.18
Про потоки и выходы из них


1-58130
fester
2002-07-08 21:40
2002.07.18
Истина где-то рядом.....:-)


14-58320
Unown
2002-06-02 11:00
2002.07.18
Как создать?




   Наверх