Topic: [Скрипт] Создание собственных пунктов меню на главной форме

Создание собственных пунктов меню на главной форме



Скрипт:

procedure Form1_OnShow (Sender: string; Action: string); // event OnShow
var
   MyItem1: TMenuItem;
   MyItem2: TMenuItem;
   MySubItem3: TMenuItem;
begin
   MyItem1 := TMenuItem.Create (Form1.MainMenu);
   MyItem1.Caption := 'Item1';
   MyItem1.OnClick := @MenuClick1;

   MyItem2 := TMenuItem.Create (Form1.MainMenu);
   MyItem2.Caption := 'Item2';

   MySubItem3 := TMenuItem.Create (Form1.MainMenu);
   MySubItem3.Caption := 'Submenu';
   MySubItem3.OnClick := @MenuClick3;

   Form1.mniFile.Insert(0, MyItem1);
   Form1.MainMenu.Items.Insert(0, MyItem2);
   MyItem2.Add(MySubItem3);
end;

procedure MenuClick1 (Sender: string);
begin
     ShowMessage('Hello from MyItem1');
end;

procedure MenuClick3 (Sender: string);
begin
     ShowMessage('Hello from subitem');
end;

begin
end.


Проект с примером:

Post's attachments

Attachment icon MainMenu create items.zip 2.83 kb, 1945 downloads since 2015-02-23 

Attachment icon MainMenu create items2.zip 5.17 kb, 1711 downloads since 2015-04-23 

Dmitry.

Re: [Скрипт] Создание собственных пунктов меню на главной форме

А они поддерживаются на последней версии?

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Да, какой то пример не работает?

Dmitry.

Re: [Скрипт] Создание собственных пунктов меню на главной форме

доброго дня.. вопрос такой : в стандартном варианте (версия 1.51) уже есть меню файл и инструменты, как переименовать "инструменты" например в "настройки" с сохранением функционала этих инструментов ????
ИЛИ добавить в "инструменты" несколько подменю ???

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Переименовать Инструменты в Настройки можно так:

Form1.mniOptions.Caption := 'Настройки';


подменю добавить можно так

Form1.mniOptions.Insert(0, MyItem1);
Dmitry.

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Спасибо) !

7 (edited by alex842 2018-07-17 10:43:53)

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Моя процедура для добавления пунктов меню.

procedure MenuItemInsert (Form:TForm;itIndex,itSubIndex:integer;itCaption, ProcOnClick:string);
//Процедура добавляет пункт в главное меню формы.
//Form - форма, в главное меню которой будут вносится изменения
//itIndex - Добавить пункт в главное меню. По умолчанию: 0 - Файл, 1 - Инструменты, 2 - О программе
//itSubIndex - Подпункт меню. Если необходимо создать пункт в основном меню, то значение должно быть -1. //Если поставить значение -2, то пункт будет всегда добавляться в конец. 
//itCaption - Название нового пункта меню
//ProcOnClick - Название процедуры, срабатывающей по щелчку на пункте меню
var
  MyItem: TMenuItem;
begin
  MyItem:= TMenuItem.Create(Form);
  MyItem.Caption:= itCaption;
  If ProcOnClick <> '' then
    MyItem.OnClick:= ProcOnClick;
  If itSubIndex = -1 then
    Form.Menu.Items.Insert(itIndex,MyItem)
  else if itSubIndex > -1 then
    Form.Menu.Items[itIndex].Insert(itSubIndex,MyItem)
  else if itSubIndex = -2 then  //вставляем последним
    Form.Menu.Items[itIndex].Add(MyItem)
end;

Пример 1

MenuItemInsert (Form1,0,-1,'Справочники','');


В меню на форме "Form1" будет создан пункт "Справочники". Поскольку у него индекс 0, то он будет самым первым. Значение "-1" указывает, что это не подпункт.

Пример 2

MenuItemInsert (Form1,0,0,'Категории','CatOpen');


В первом пункте главного меню (индекс 0) будет создан подпункт "Категории", при клике на который сработает процедура "CatOpen".

Post's attachments

Attachment icon FormMenuItemsInsert.zip 336.73 kb, 505 downloads since 2018-07-17 

8 (edited by alex842 2018-07-17 10:45:15)

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Вот как будет выглядеть второй пример Дмитрия из первого поста, если использовать эту процедуру.

Post's attachments

Attachment icon MainMenu create items2_remake.zip 338.37 kb, 538 downloads since 2018-07-17 

Re: [Скрипт] Создание собственных пунктов меню на главной форме

Спасибо за примеры.

Dmitry.