Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.03.20;
Скачать: CL | DM;

Вниз

как узнать что мышка ушла с объекта - Panel1?   Найти похожие ветки 

 
starlit   (2005-03-02 23:23) [0]

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


 
default ©   (2005-03-03 00:34) [1]

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


 
Ozone ©   (2005-03-03 06:44) [2]

WM_MOUSELEAVE + WM_MOUSEENTER


 
Gero ©   (2005-03-03 08:29) [3]

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


 
Ozone ©   (2005-03-03 08:47) [4]


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


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


 
StarLit   (2005-03-03 12:06) [5]

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


 
Gero ©   (2005-03-03 12:39) [6]


> StarLit   (03.03.05 12:06)

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


 
stakan ©   (2005-03-03 12:43) [7]


 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;

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


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

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

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

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


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


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

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


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

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


 
Sun bittern ©   (2005-03-03 22:29) [11]

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


 
Gero ©   (2005-03-03 22:34) [12]

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

procedure TLeoPanel.CMMouseEnter(var Message: TMessage);

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


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

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

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


 
Ozone ©   (2005-03-04 07:55) [14]


> [13] StarLit   (04.03.05 00:09)


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


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

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


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

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


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

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


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;



Страницы: 1 вся ветка

Текущий архив: 2005.03.20;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.034 c
1-1109871620
vandal
2005-03-03 20:40
2005.03.20
Как обработать текст в TLabel?


6-1105901644
Eraser
2005-01-16 21:54
2005.03.20
Multicast и всё, что с ним связано.


1-1110287709
a.denisov
2005-03-08 16:15
2005.03.20
Реализация ShowModal


1-1110127327
anamal
2005-03-06 19:42
2005.03.20
Из Delphi 7 в Delphi 8


9-1103855943
Гамомака
2004-12-24 05:39
2005.03.20
Как сделать экран загрузки в PowerDraw?