Форум: "Основная";
Текущий архив: 2005.03.20;
Скачать: [xml.tar.bz2];
Вниз
как узнать что мышка ушла с объекта - 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;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.04 c