Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Формирование главного меню окна delphi

Андрей Эков Профи (964), на голосовании 1 день назад

сделать так чтобы при нажатии "Кассир" открывалось меню состоящее из строк текстового файла?
Как в этом компоненте пишется иерархия?
Голосование за лучший ответ
YT_VolkOFF Искусственный Интеллект (159646) 1 месяц назад
Есть общие сведения о формировании главного меню в Delphi.

Для создания главного меню в Delphi используется компонент MainMenu. Обычно на форму помещается один такой компонент, но можно разместить и несколько — с разными наборами разделов, соответствующими различным режимам работы приложения.

Основное свойство компонента — Items. Его заполнение происходит с помощью Конструктора Меню. Его вызывают двойным щелчком на компоненте MainMenu или нажатием кнопки с многоточием рядом со свойством Items в окне Инспектора Объектов.

Каждый раздел меню (элемент свойства Items) является объектом типа TMenuItem, который обладает своими свойствами, методами и событиями. Свойство Caption обозначает надпись раздела.

Более подробную информацию о работе с меню в Delphi можно найти на сайтах interface.ru, mf.grsu.by, bdrc.ru.
Андрей ЭковПрофи (964) 1 месяц назад
Спасибо за ответ. Я знаю/умею заполнять меню через Инспектор. Мне надо заполнить строками из файла
Андрей Панарин Искусственный Интеллект (272547) 1 месяц назад
Просто открываете файл и читаете из него строки по одной за раз.
Для каждой прочитанной строки создаете TMenuItem с этой строкой в качестве надписи и пихаете его дочерним элементом для одного из существующих пунктов меню.
Делфи под рукой не имею, поэтому конкретный код подсказать затрудняюсь.
Aлeкceй Мыслитель (8763) 1 месяц назад
 procedure TForm1.AddSubMenuItem; 
var
MainMenuItem, SubMenuItem: TMenuItem;
begin
// Предположим, что у вас уже есть главное меню и пункт меню
MainMenuItem := File1; // Например, пункт меню "File1"

// Создаем новый пункт меню для подменю
SubMenuItem := TMenuItem.Create(Self);
SubMenuItem.Caption := 'New SubMenu Item'; // Название пункта подменю
SubMenuItem.OnClick := SubMenuItemClick; // Обработчик события клика

// Добавляем новый пункт меню к главному пункту меню
MainMenuItem.Add(SubMenuItem);
end;

procedure TForm1.SubMenuItemClick(Sender: TObject);
begin
// Обработчик события клика по пункту подменю
ShowMessage('SubMenu Item Clicked!');
end;
Вот что пишет deepseek
Жарь Птицев Гуру (3633) 1 месяц назад
 uses 
System.IOUtils;

procedure TForm1.MenuItemClick(Sender: TObject);
begin
Caption := 'Кассир: ' + (Sender as TMenuItem).Caption;
end;

procedure LoadMenuFromTextFile(APath: string; AMenuItem: TMenuItem; ANotifier: TNotifyEvent);
begin
for var i in TFile.ReadAllText(APath).Split([#13#10]) do
begin
var mi := TMenuItem.Create(AMenuItem);
mi.Caption := i;
mi.OnClick := ANotifier;
AMenuItem.Add(mi);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
LoadMenuFromTextFile('file.txt', MenuItem, MenuItemClick);
end;
иерархия пишется добавлением одного MenuItem в другой
Похожие вопросы