Форум: "Основная";
Текущий архив: 2003.08.11;
Скачать: [xml.tar.bz2];
ВнизКак сделать 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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.005 c