Главная страница
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.012 c
14-33336
DeScriptor
2003-07-25 04:52
2003.08.11
CRC


1-33179
avkiev
2003-07-28 12:32
2003.08.11
Как при отладке не вываливаться в оболочку ?


1-33169
Z_man7777
2003-07-28 12:04
2003.08.11
Вопрос по TQuickReport


6-33243
alexd1
2003-06-04 20:48
2003.08.11
Пересылка записи(тип record) через Сокет.


14-33263
Сергей83
2003-07-26 10:04
2003.08.11
dll