Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.014 c
14-33294
Igor__
2003-07-24 09:42
2003.08.11
Хочу крутой ярлык!!!!!


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


1-33162
Кодер
2003-07-28 13:28
2003.08.11
Скоростной сброс инфы в файл


14-33269
Timur
2003-07-25 19:44
2003.08.11
Файлы H2O или H20


3-33075
LeReve
2003-07-17 17:44
2003.08.11
про TCalientDataSet.ApplyUpdate




   Наверх