Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

как узнать что мышка ушла с объекта - Panel1? [D6]


starlit ©   (2005-03-02 23:23:00) 

чтобы скрыть эту панель.
необходимо сделать что то походее на выпадающие меню.


Knight   (2005-03-06 00:07:00) [1]

А можно так... при перемещении мыши над панелью, проверять её на начальный размер, если так, то разворачивать и запускать таймер проверки положения курсора. Если он вышел за область панели, останавливать таймер и схлопывать панель...


procedure TForm1.Panel1MouseMove(Sender: TObject; Shift: TShiftState; X,
 Y: Integer);
begin
 if Panel1.Width=10 then begin
   Panel1.Width:=300;
   Timer1.Enabled:=True;
 end;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
 if not PtInRect(Panel1.BoundsRect,Panel1.ScreenToClient(Mouse.CursorPos)) then begin
   Timer1.Enabled:=False;
   Panel1.Width:=10;
 end;
end;


StarLit   (2005-03-05 23:40:00) [2]

Ozone, при ЗАЕЗДЕ мышки на поле панели отраб. процедура клика по этой панели


РшЕус   (2005-03-04 15:50:00) [3]

Можно использовать системный обьект Mouse:
If Mouse.CursorPos.X >Panel1.Width...


Ozone   (2005-03-04 07:55:00) [4]


> [13] StarLit   (04.03.05 00:09)


Скажи мне, пожалуйста, что ты хотел этим получить.


StarLit   (2005-03-04 00:09:00) [5]

procedure TForm1.FormCreate(Sender: TObject);
begin
TMyPanel(Panel1).OnMouseEnter:=Panel1Click;
end;

сделал так, но ни какой реакции....


Gero   (2005-03-03 22:34:00) [6]

В [7] посте ошибка —
TMyPanel= class(TPanel)

procedure TLeoPanel.CMMouseEnter(var Message: TMessage);

Естественно, это один класс.


Sun bittern   (2005-03-03 22:29:00) [7]

А ты все-все сделал как в stakan ©   (03.03.05 12:43) [7] ?
Нас терзают смутные сомненья :)


StarLit   (2005-03-03 22:20:00) [8]

CMMouseEnter - это компилятор не признает...
нет не работает


Gero   (2005-03-03 20:36:00) [9]


> StarLit   (03.03.05 20:03)
> что нибудь есть более менее рабочее?

А, что [7] не работает?


StarLit   (2005-03-03 20:03:00) [10]

stakan, sorry но что то я не понял....

CMMouseEnter - это откуда?

что нибудь есть более менее рабочее? (если не сложно конечно)


stakan   (2005-03-03 12:43:00) [11]


 TMyPanel = class(TPanel)
 private
   FOnMouseLeave: TNotifyEvent;
   FOnMouseEnter: TNotifyEvent;
   procedure CMMouseEnter(var Message: TMessage); message CM_MOUSEENTER;
   procedure CMMouseLeave(var Message: TMessage); message CM_MOUSELEAVE;
 published
   property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
   property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;  
 end;
...

procedure TLeoPanel.CMMouseEnter(var Message: TMessage);
begin
 inherited;
 if Assigned(FOnMouseEnter) then
   FOnMouseEnter(Self);
end;

procedure TLeoPanel.CMMouseLeave(var Message: TMessage);
begin
 inherited;
 if Assigned(FOnMouseLeave) then
   FOnMouseLeave(Self);
end;

Что - то вроде этого


Gero   (2005-03-03 12:39:00) [12]


> StarLit   (03.03.05 12:06)

Наследника компонента написать сумеешь?


StarLit   (2005-03-03 12:06:00) [13]

А пример можно?


Ozone   (2005-03-03 08:47:00) [14]


>  [3] Gero ©   (03.03.05 08:29)


Да, я ошибся. Нужно CM_MOUSEENTER, CM_MOUSELEAVE


Gero   (2005-03-03 08:29:00) [15]

Нет, WM_MOUSEENTER здесь ни при чем.


Ozone   (2005-03-03 06:44:00) [16]

WM_MOUSELEAVE + WM_MOUSEENTER


default   (2005-03-03 00:34:00) [17]

можно через OnMouseMove панели и её родителя


Наверх

Титульная страница Поиск, карта сайта Написать письмо