Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Обработать "уход" курсора с формы!

17K
18 апреля 2006 года
Puzzarcist
5 / / 18.04.2006
Вообщем проблема в том, что мне нужно обработать событие, когда курсор покидает форму! Не компонент, а именно форму! С компонентом там легко, а вот с формой(((( Подскажите плизз! Сам по ходу дела не дойду)))
5
18 апреля 2006 года
hardcase
4.5K / / 09.08.2005
 
Код:
TForm1 = class(TForm)
protected
  proceure WMNCMouseLeave(var Message: TMessage); message WM_NCMOUSELEAVE;
end;

...
procedure TForm1.WMNCMouseLeave(var Message: TMessage);
  begin

  end;
286
19 апреля 2006 года
misha_turist
572 / / 28.11.2005
Цитата:
Originally posted by hardcase
 
Код:
TForm1 = class(TForm)
protected
  proceure WMNCMouseLeave(var Message: TMessage); message WM_NCMOUSELEAVE;
end;

...
procedure TForm1.WMNCMouseLeave(var Message: TMessage);
  begin

  end;



А это событие для любого наследника TWinControl справедливо?

5
19 апреля 2006 года
hardcase
4.5K / / 09.08.2005
Цитата:
Originally posted by misha_turist
А это событие для любого наследника TWinControl справедливо?


Это сообщение генерируется системой при вызове TrackMouseEvent

17K
19 апреля 2006 года
Puzzarcist
5 / / 18.04.2006
Ну там не WMNCMouseLeave, а MC_MouseLeave)))
И оно корректно работает тока с наследниками TForm. А с самой формой....Процедура вызывается тока когда форма фокус потеряет! А нада чтоб когда мыша просто покидала форму! Вообщем эффект как у панели задач, когда ставишь "АвтоУбирание")))
5
19 апреля 2006 года
hardcase
4.5K / / 09.08.2005
А ты описания функции читал?
Вот пример.
Код:
type
  TForm1 = class(TForm)
    Label1: TLabel;
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
  private

  protected
    procedure WMMouceLeave(var Message: TMessage); message WM_MOUSELEAVE;
  public
    { Public declarations }
  end;

procedure TForm1.WMMouceLeave(var Message: TMessage);
  begin
    Label1.Caption:='Mouse! Come back'
  end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
  var Et: tagTRACKMOUSEEVENT;
  begin
    Et.cbSize:=sizeof(Et);
    Et.dwFlags:=TME_LEAVE;
    Et.hwndTrack:=Handle;
    Et.dwHoverTime:=1000;
    TrackMouseEvent(Et);
    Label1.Caption:='Mouse is here'
  end;

чтобы принимать сообщения WM_NCMOUSELEAVE нужно казать флаг TME_NONCLIENT у Et.
17K
20 апреля 2006 года
Puzzarcist
5 / / 18.04.2006
))) Спасиб))) Не совсем конечно понял, что к чему, времени пока нету, потом разберусь!
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог