Delphi World - это проект, являющийся сборником статей и малодокументированных возможностей  по программированию в среде Delphi. Здесь вы найдёте работы по следующим категориям: delphi, delfi, borland, bds, дельфи, делфи, дэльфи, дэлфи, programming, example, программирование, исходные коды, code, исходники, source, sources, сорцы, сорсы, soft, programs, программы, and, how, delphiworld, базы данных, графика, игры, интернет, сети, компоненты, классы, мультимедиа, ос, железо, программа, интерфейс, рабочий стол, синтаксис, технологии, файловая система...
Определить когда мышь над компонентом, а когда она ушла с него


Купил мужик мышь для компа оптическую. Круто! В руководстве написано - работает на любой поверхности. Повозил по столу - работает! ...по бумаге - работает! ...по линолеуму - работает! Что бы ещё попробовать? По ЗЕРКАЛУ!!! - "Обнаружено новое устройство..."

Для того, чтобы определить когда мышь над компонентом, в данном примере это будет панель, мы создадим новый класс, который будет являться потомком класса TPanel, и будет обрабатывать некоторые необходимые нам для данной задачи сообщения Windows.

Для этого определим следующим образом новый тип:


type
  TMyPanel=class(TPanel)
  public
    procedure CMMouseEnter (var message: TMessage); message CM_MOUSEENTER;
    procedure CMMouseLeave (var message: TMessage); message CM_MOUSELEAVE;
end;

Называться наш новый класс будет TMyPanel. Определить его можете до определение класса формы, т.е. сразу после директивы uses.

После объявления экземпляра формы нужно объявить экземпляр нашего нового класса:


var
  Form1: TForm1;
  MyPanel1: TMyPanel;

В разделе implemetation обрабатываем несколько сообщения, именно этими обработчиками наш класс и будет отличаться от класса стандартной панели.


procedure TMyPanel.CMMouseEnter (var message: TMessage);
begin
  Form1.Label1.Caption:='Мышь на панели';
end;

procedure TMyPanel.CMMouseLEAVE (var message: TMessage);
begin
  Form1.Label1.Caption:='Мышь вне панели';
end;

По созданию окна создаём экземпляр нашего класса:


procedure TForm1.FormCreate(Sender: TObject);
begin
  MyPanel1 := TMyPanel.Create(self);
  with MyPanel1 do
  begin
    Parent := Form1;
    Visible := True;
    Left := 100;
    Top := 100;
  end;
end;

По уничтожению окна, соответственно, - уничтожаем:


procedure TForm1.FormDestroy(Sender: TObject);
begin
  MyPanel1.Destroy;
end;

Проект Delphi World © Выпуск 2002 - 2024
Автор проекта: USU Software
Вы можете выкупить этот проект.