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

Вниз

Как сделать PopupMenu меню как в самой Delphi?   Найти похожие ветки 

 
@Ujin ©   (2003-07-29 23:47) [0]

В Delphi замечательные всплывающие менюшки. Выглядят как подменю в ActionMeneger"ах стандартные пункты. Очень хочется такие использовать в своих программах. Подскажите как!


 
Zergling ©   (2003-07-30 06:14) [1]

Как то задовал подобный вопрос. Получил ответ, что никак. Скорее всего писать свой компонент производный (смотреть реализацию TActionMenuBar)


 
Babay ©   (2003-07-30 06:24) [2]

Удалось сделать так. На правильность не претендую.Это Результат просмотра исходников VCL, Хелпа и метод втыка.

На форме лежит RichEdit,ActionManager1,ActionMainMenuBar1
В ActionManager1 созданы стандартные пункты типа Copy, Cut, Paste и т.д.

Var m:TCustomActionPopupMenu; // глобальная переменная

procedure TForm1.FormCreate(Sender: TObject);
begin
m:=TCustomActionPopupMenu.Create(self);
m.ActionClient:=ActionManager1.FindItemByCaption("&Edit");// пункт меню с подменюшками
// еще здесь можно использовать наверное FindItemByAction но мне так показалось легче
end;

procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbRight then
m.Popup(Left+x+RichEdit1.left ,Top+y+RichEdit1.top);
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
m.Free;
end;

Пробуйте у меня заработало. Удачи. :=))#


 
Babay ©   (2003-07-30 06:29) [3]

Да еще возможно нужно более точно расчитать позицию для показа меню вот здесь

m.Popup(Left+x+RichEdit1.left ,Top+y+RichEdit1.top);
ну это думаю для Вас не проблема


 
Babay ©   (2003-07-30 06:40) [4]

Так господа в предыдущем коде обнаружена ошибка. Ежели вызвать это меню нормально (Из верхнего) а потом для для рича то возникает AV.
Так что заработало вот так

Var m:TCustomActionPopupMenu; // глобальная переменная

procedure TForm1.RichEdit1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if Button=mbRight then begin
m:=TCustomActionPopupMenu.Create(self);
m.ActionClient:=ActionManager1.FindItemByCaption("&Edit");
m.Popup(Left+x+RichEdit1.left ,Top+y+RichEdit1.top);
m.Free;
end;
end;

возможно еще могут быть баги... :=))# Я же говорю пробуйте.


 
andrey_pst ©   (2003-07-30 07:24) [5]

http://vaktyjd.besthost.ru/vr-online/download/component.htm
см. компонент Popup Acton



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
7-33379
msgipss
2003-05-27 07:51
2003.08.11
Автоматически закрыть доступ к файлу всем пользователям


14-33365
Fenik
2003-07-17 12:48
2003.08.11
Охота на фишку закончена.


1-33219
ehri
2003-07-29 15:58
2003.08.11
Memo


14-33362
Мазут Береговой
2003-07-25 10:16
2003.08.11
Можно ли в MS Access поставить на таймер бэкап базы?


14-33322
Мимо проходил
2003-07-24 14:45
2003.08.11
Брата никто не видел?