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

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

OnClick на SubMenu не работает?


***Evil*** ©   (2009-05-12 01:09:00) 

Здраствуйте уважаемые мастара!!!
Возникла проблема
Есть всплывающее меню(PopupMenu) в нем есть несколько уровней итемов. Так вот на тех итемах в которых есть дочерные субитемы событие OnClick срабатывает не при кликеа при розварачиваннии дочерных обектов. Собственно вопрос такой можна зделать так чтобы события OnClick работало только при фмзическом клике?


***Evil***   (2009-05-12 14:43:00) [1]


> Есть подозрение, что он ms офиса насмотрелся и хочет сделать
> по образу :-)

Ну нет не в Ms это точно если память не изменяет мне то такую фичу я видел в линуксах а точнее в KDE кстате фича довольно удобная

> Чтобы через менюшку реализовать "Копировать в ..." никакого
> OnClick на подменю вовсе не требуется.

А можна пример какой-то а то у меня уже мозг кипит

> Зачем он тебе нужен то, можешь по человечески сказать?

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


AIK   (2009-05-12 11:56:00) [2]


> Плохиш ©   (12.05.09 11:16) [12]
> Есть подозрение, что он ms офиса насмотрелся и хочет сделать
> по образу :-)


Может быть оно и так, но вопрос действительно интересный
Ведь вроде на меню никакого клика не происходит а событие OnClick все ровно происходит


Плохиш   (2009-05-12 11:16:00) [3]

Есть подозрение, что он ms офиса насмотрелся и хочет сделать по образу :-)


Юрий Зотов   (2009-05-12 08:49:00) [4]

> ***Evil***   (12.05.09 03:14) [7]

> через менюшку будет реализовано "Копировать в ..." вот для этого мне и
> нужен OnClick на под меню...

Чтобы через менюшку реализовать "Копировать в ..." никакого OnClick на подменю вовсе не требуется.


Palladin   (2009-05-12 07:44:00) [5]

Зачем он тебе нужен то, можешь по человечески сказать?


***Evil***   (2009-05-12 03:39:00) [6]


> Не нужно OnClick на подменю. Насчет мыши - советую учесть,
>  что с меню работают не только мышью, а еще и с клавиатуры.
>

Ну мне не обезательно OnClick мне нужен сам факт физического клика, и да нужна не только мышь... но как этот клик(нажатия) отловить? Хуки ставить?
Может кто-то што-то посоветует по этой теме...


Игорь Шевченко   (2009-05-12 03:30:00) [7]


> Просто через менюшку будет реализовано "Копировать в ...
> " вот для этого мне и нужен OnClick на под меню...


Не нужно OnClick на подменю. Насчет мыши - советую учесть, что с меню работают не только мышью, а еще и с клавиатуры.


***Evil***   (2009-05-12 03:14:00) [8]


> Игорь Шевченко ©   (12.05.09 02:58) [6]
> а не надо OnClick на подменю вешать - его задача - разворачивать
> дочерние элементы. Не надо пугать пользователя, а то он
> убежит навсегда.


Да вот я думаю он не испугается )))
Просто через менюшку будет реализовано "Копировать в ..." вот для этого мне и нужен OnClick на под меню... А каким образом собственно заставить его кликатся пока не придумал... пробывал проверять была ли нажата кнопка мыши через GetKeyState(VK_LBUTTON) без результатно... (((


Игорь Шевченко   (2009-05-12 02:58:00) [9]

а не надо OnClick на подменю вешать - его задача - разворачивать дочерние элементы. Не надо пугать пользователя, а то он убежит навсегда.


***Evil***   (2009-05-12 02:36:00) [10]

Или вот еще картинка __ http://evil.bobrovica.org.ua/test3.jpg


***Evil***   (2009-05-12 02:35:00) [11]

Код:
unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, Menus;

type
 TForm1 = class(TForm)
   PopupMenu1: TPopupMenu;
   test11: TMenuItem;
   test21: TMenuItem;
   test31: TMenuItem;
   procedure test11Click(Sender: TObject);
 private
 public
   { Public declarations }
 end;

var
 Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.test11Click(Sender: TObject);
begin
 if (Sender is TMenuItem) then
   ShowMessage((Sender as TMenuItem).Caption);
end;

end.

Форма:
object Form1: TForm1
 Left = 0
 Top = 0
 Caption = 'Form1'
 ClientHeight = 269
 ClientWidth = 485
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'Tahoma'
 Font.Style = []
 OldCreateOrder = False
 PopupMenu = PopupMenu1
 PixelsPerInch = 96
 TextHeight = 13
 object PopupMenu1: TPopupMenu
   Left = 184
   Top = 160
   object test11: TMenuItem
     Caption = 'test1'
     OnClick = test11Click
     object test21: TMenuItem
       Caption = 'test2'
       OnClick = test11Click
       object test31: TMenuItem
         Caption = 'test3'
         OnClick = test11Click
       end
     end
   end
 end
end


Германн   (2009-05-12 02:23:00) [12]


> ***Evil***   (12.05.09 02:19) [2]
>
> Ну нормально он работает только если нет дочерных обьектов.
> ...
> Попытаюсь показать на примере:

А нормальный пример привести?


***Evil***   (2009-05-12 02:19:00) [13]

Ну нормально он работает только если нет дочерных обьектов....
Попытаюсь показать на примере:

==Главная ветвь==>>==Второй уровень==>>==Третий уровень
        ^^^                          ^^^                         ^^^
---------------------------------------------          ^^^
Вот здесь OnClick работает только при                    ^^^
розварачивание меню, физ клик не работает           ^^^
                                                                         ^^^
                                                     ----------------------------------
                                                     А здесь все работает...


Германн   (2009-05-12 01:52:00) [14]


> OnClick на SubMenu не работает?
>
> ***Evil***   (12.05.09 01:09)
>
> Здраствуйте уважаемые мастара!!!
> Возникла проблема
> Есть всплывающее меню(PopupMenu) в нем есть несколько уровней
> итемов. Так вот на тех итемах в которых есть дочерные субитемы
> событие OnClick срабатывает не при клике а при розварачиваннии
> дочерных обектов. Собственно вопрос такой можна зделать
> так чтобы события OnClick работало только при фмзическом
> клике?
>

У всех OnClick работает нормально.


Наверх

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