Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Вниз

скрыть всплывающее меню TPopupMenu   Найти похожие ветки 

 
Dyuzhev   (2003-07-11 11:32) [0]

Возникла следующая проблема: необходимо сделать меню в
некоторой части формы (не вверху). Нужно чтобы при наведении курсора
на некоторый текст ниже этого текста всплывало несколько пунтктов меню.
А при уползании курсора с текста оно _автоматически_ (а не после нажатия
клавиши мыши) исчезало.

Сделал следующее: у метки TLabel есть обработчик OnMouseMove:
Popupmenu1.Popup(x+10,y+20);

Как убрать теперь это меню ?


Может быть есть уже готовая компонента, которая позволяет делать меню в
любом
месте формы, а не только вверху ?

Или как-то все это по другому делается ?


 
Song   (2003-07-11 12:18) [1]

ClientToScreen()


 
VMcL   (2003-07-11 13:20) [2]

>Dyuzhev © (11.07.03 11:32)

Лучше OnMouseEnter, OnMouseLeave


 
Dyuzhev   (2003-07-11 20:08) [3]

>Song © (11.07.03 12:18)
>ClientToScreen()


Как изменение координат может мне помочь скрыть меню ?


 
Dyuzhev   (2003-07-11 20:12) [4]

>VMcL © (11.07.03 13:20)

>Лучше OnMouseEnter, OnMouseLeave

Привожу код новой компоненты:
...
type
TPopupMenuEx = class (TPopupMenu)
private
{ Private declarations }
FOnMouseLeave: TNotifyEvent;
FOnMouseEnter: TNotifyEvent;
procedure CMMouseEnter(var msg: TMessage); message CM_MOUSEENTER;
procedure CMMouseLeave(var msg: TMessage); message CM_MOUSELEAVE;
protected
{ Protected declarations }
procedure DoMouseEnter; dynamic;
procedure DoMouseLeave; dynamic;
public
{ Public declarations }
published
{ Published declarations }
property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter;
property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave;
end;

procedure Register;

implementation

procedure Register;
begin
RegisterComponents("Additional", [TPopupMenuEx]);
end;

{ TPopupMenuEx }

procedure TPopupMenuEx.CMMouseEnter(var msg: TMessage);
begin
DoMouseEnter;
end;

procedure TPopupMenuEx.CMMouseLeave(var msg: TMessage);
begin
DoMouseLeave;
end;

procedure TPopupMenuEx.DoMouseEnter;
begin
if Assigned(FOnMouseEnter) then FOnMouseEnter(Self);
end;

procedure TPopupMenuEx.DoMouseLeave;
begin
if Assigned(FOnMouseLeave) then FOnMouseLeave(Self);
end;
end.
-------------------------------------------------

В самой программе в обработчике сведения курсора мыши с раскрытого меню пишу:

procedure TForm1.PopupMenuEx1MouseLeave(Sender: TObject);

begin
messagedlg("test",mtError,[mbOK],0);
end;


И ничего не происходит ! :( Тоже самое с MouseEnter.

Что делаю не так ?

Заранее спасибо.



 
Spawn   (2003-07-11 21:15) [5]

А може нужно ето делать для TMenuItem?


 
Dyuzhev   (2003-07-12 20:26) [6]

>Spawn © (11.07.03 21:15)
>А може нужно ето делать для TMenuItem?

Каким образом ?
Пример кода можешь привести ?



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

Форум: "Основная";
Текущий архив: 2003.07.24;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.45 MB
Время: 0.008 c
1-77863
Kiril
2003-07-13 15:05
2003.07.24
[Error] Unsatisfied forward or external declaration... ?


1-77971
TCrash
2003-07-11 10:58
2003.07.24
zip-архивы


1-77922
Сергей Ч
2003-07-10 14:34
2003.07.24
Установил Delphi7


8-78000
Deus
2003-03-31 03:39
2003.07.24
Как реализовать Magic Wand?


14-78049
ZeroDivide
2003-07-04 13:08
2003.07.24
Опрос матеров по поводу взлома программ!!!





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский