![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Добавить новый подпункт в пункт меню ActionMainMenuBar. [D7, XP]
AlexanderMS © (2006-07-11 17:37:00)Совсем запутался. Помогите, пожалуйста.
Мефисто (2006-07-12 20:06:00) [1]
> AlexanderMS © (12.07.06 08:20) [5]
Обрати внимание на свойства коллеций в инспекторе объектов.
Там есть:
TActionClients; - группа меню (выпадающее меню)
TActionClientItem; - пункт меню
Вот, по аналогии с примером выше и пробивайся :)
Т.е. получается так:
var
A: TAction;
ACI: TActionClientItem;
begin
A := TAction.Create(ActionManager1);
A.Caption := 'Test';
ACI := ActionManager1.ActionBars[0].Items[0].Items.Add; // К TActionManager подцеплен TActionMenuBar
A.OnExecute := Button1Click; // Если событие не назначено - TAction не активен
ACI.Action := A;
end;
ActionBars[0] - подцепленная TActionMainMenuBar
Items[0] - индекс группы меню (Edit - 0, Help - 1)
Вот я так понимаю, такое меню?
http://slil.ru/22918325- GIF 4kb
AlexanderMS (2006-07-12 08:20:00) [2]Мефисто: Не помогает! Там если взглянуть на иерархию (через View as Text), то окажется, что категория Tools находится здесь:
ActionManager.ActionBars[4].Items[4]
и выглядит так:
item // это, получается, - ActionManager.ActionBars[4].Items[4]
Items = <
item // один пункт. Нужно добавить ещё один.
Action = MShowMSSM
Caption = 'MShowMSSM' // не обращать внимание на Caption. Оно меняется в RunTime.
ImageIndex = 8
end>
// очевидно перед < должен попасть новый пункт.
Caption = '&Tools'
И нужно в эти Items добавить пункт.
Но там нет никакого Add.
Мефисто (2006-07-11 20:14:00) [3]var
A: TAction;
ACI: TActionClientItem;
begin
A := TAction.Create(ActionManager1);
A.Caption := 'Test';
ACI := ActionManager1.ActionBars[0].Items.Add; // К TActionManager подцеплен TActionMenuBar
A.OnExecute := Button1Click; // Если событие не назначено - TAction не активен
ACI.Action := A;
end;
AlexanderMS (2006-07-11 18:58:00) [4]Не работает! При попытке "развернуть" пункт (у меня - '&Tools') выскакивает ошибка!
> Уж больно все там запутанно!
Ещё бы! Кто такое выдумал! Форма -> View as Text - и там этих Item'ов и категорий!
Loginov Dmitry (2006-07-11 18:29:00) [5]Если в существующий пункт меню, тогда можно вот-так:
unit MainFrm;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ActnList, XPStyleActnCtrls, ActnMan, ToolWin, ActnCtrls,
ActnMenus, StdCtrls;
type
TMainForm = class(TForm)
ActionMainMenuBar1: TActionMainMenuBar;
ActionManager1: TActionManager;
Action1: TAction;
Button1: TButton;
procedure Action1Execute(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
procedure OnActionExitClick(Sender: TObject);
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.dfm}
procedure TMainForm.Action1Execute(Sender: TObject);
begin
Beep;
end;
procedure TMainForm.Button1Click(Sender: TObject);
var
MyAction: TAction;
begin
MyAction := TAction.Create(Self);
with MyAction do
begin
Caption := 'Выход';
OnExecute := OnActionExitClick;
end;
ActionManager1.AddAction(MyAction, ActionManager1.FindItemByCaption('Файл').Items[0]);
end;
procedure TMainForm.OnActionExitClick(Sender: TObject);
begin
Close;
end;
end.
А как с нуля - Х.З. Уж больно все там запутанно!
AlexanderMS (2006-07-11 17:59:00) [6]Не так написал: как во время RunTime хотел спросить.