Главная страница
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.47 MB
Время: 0.019 c
1-33104
mma
2003-07-27 12:16
2003.08.11
Доступ из dll к основной программе


14-33292
Igor__
2003-07-23 22:30
2003.08.11
Сервисы


6-33253
Def
2003-05-30 13:33
2003.08.11
Работа с модемом


3-33047
Rov
2003-07-14 13:55
2003.08.11
Сохранение JPG


6-33238
killer
2003-06-03 03:39
2003.08.11
Избранное в Internet Explorer и Delphi