Вниз
Скачать: 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.008 c
14-58316
федя
2002-06-22 03:58
2002.07.18
Data Controls


1-58127
ёё
2002-07-08 21:16
2002.07.18
Вопрос по TStringList .


8-58230
Ash
2002-01-31 02:51
2002.07.18
Уважаемые мастера, фактура поверхности в рисунке...


3-57930
Alban
2002-06-24 13:08
2002.07.18
Мастера подскажите новичку как базу формата gdb перевести в bdf


4-58365
GatesBill
2002-05-19 21:54
2002.07.18
как можно простым способом переименовать директорию?




   Наверх