Главная страница
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.03 c
1-1110022038
Erl
2005-03-05 14:27
2005.03.20
MDI


1-1109855002
Aleksandr.
2005-03-03 16:03
2005.03.20
А-а! Почему TDecompressionStream распаковывает не то?!


14-1109678822
asafr
2005-03-01 15:07
2005.03.20
сочинение по теме «Кем я хочу стать когда я буду большим»


1-1109698082
Shnabs
2005-03-01 20:28
2005.03.20
Компонент типа TComboBox


1-1110314094
Kotyara
2005-03-08 23:34
2005.03.20
PChar в качестве параметра-переменной