2015-04-23 2 views
-3

Я хочу сделать меню и подменю и subsubmenus в Delphi. Общая длина составляет 4000 элементов, и она будет очень точно определять их и давать индивидуальное действие. Я знаю, что я могу использовать цикл, чтобы определить их подписи и их onclick. Я пробовал с разными командами, но программа не находит эти команды.Как сделать меню с помощью петли

Например, я хочу сравнить продукты разных компаний, скажем, с едой. органические или неорганические. молочные продукты содержат молоко, йогурт, сыр, сливки и так далее, каждый из которых обладает натуральным, средним или низким содержанием жира. И так далее для других пищевых продуктов. Я сделал список продуктов внутри файла, чтобы я мог прочитать каждый элемент из файла и поместить их в заголовок menuitem, когда я их создаю. Но я не могу создать элементы меню и добавить текст в свой заголовок. Я использовал xtem.Index [i], но программа не распознает.

Когда я готов с определением меню, я должен сделать цикл, который, когда я выбираю элемент в строке меню, должен появиться в поле редактирования для дальнейших вычислений, поэтому у меня нет проблем.

Также моя проблема состоит в том, чтобы сделать два типа продуктов органического объявления неорганическими У каждого из них более 1000 подменю, и в каждом подменю есть как минимум 1 элемент, и может быть, что в некоторых суббумменах есть несколько элементов. Поэтому я хочу сделать меню, используя цикл.

После этого, когда я выбираю элемент, он должен появиться в editbox, поэтому для этого я должен использовать правильную команду в цикле.

Я надеюсь, и желание и оценить, если вы можете помочь мне в моей просьбе и сказать мне несколько команд, так что я могу завершить свою программу

+6

Это много пунктов не звучит как работа для меню, а скорее в виде дерева. Бедный пользователь, который случайно закрывает меню после длительного поиска элемента. – TLama

+0

4000 Элементов меню ... будут ли они даже соответствовать нормальному экрану? Послушайте TLama. Пожалуйста, также обновите свой вопрос в лучшем формате. См. [Как спросить] (http://stackoverflow.com/help/how-to-ask) –

+0

Ваш дизайн пользовательского интерфейса, безусловно, испорчен. Кроме того, можно создать меню динамически. Если вы этого не сделаете, я думаю, вы допустили ошибку в своем коде. Который мы не видим. Перейдите к вопросу и добавьте короткий пример кода, который вы использовали для динамического создания меню. О, когда вы редактируете вопрос, добавьте некоторую структуру. Некоторые абзацы помогут. –

ответ

3

вы не очень специфичен о том, что вы хотите, чтобы я сделал тебя небольшой пример того, как создать MainMenu во время выполнения. Но я согласен с комментариями, что это решение BAD.

Но в любом случае здесь идет:

uses 
    Menus; 


procedure TForm17.CreateMainMenu; 
var 
    MainMenu: TMainMenu; 
    TopMenuItem, MenuItem, SubMenuItem: TMenuItem; 
    i, j, k: Integer; 
begin 
    MainMenu := TMainMenu.Create(Self); 

    for i := 0 to 5 do 
    begin 
    TopMenuItem := TMenuItem.Create(MainMenu); 
    TopMenuItem.Caption := 'Top menu item #' + i.ToString; 
    TopMenuItem.OnClick := MenuItemClick; 
    MainMenu.Items.Add(TopMenuItem); 
    TopMenuItem := MainMenu.Items[i]; 

    for j := 0 to 10 do 
    begin 
     MenuItem := TMenuItem.Create(MainMenu); 
     MenuItem.Caption := 'Menu item #' + j.ToString; 
     MenuItem.OnClick := MenuItemClick; 
     TopMenuItem.Add(MenuItem); 
     MenuItem := TopMenuItem.Items[j]; 

     for k := 0 to 10 do 
     begin 
     SubMenuItem := TMenuItem.Create(MainMenu); 
     SubMenuItem.Caption := 'Sub Menu item #' + k.ToString; 
     SubMenuItem.OnClick := MenuItemClick; 
     MenuItem.Add(SubMenuItem); 
     SubMenuItem := MenuItem.Items[k]; 
     end; 
    end; 
    end; 
end; 


procedure TForm17.FormCreate(Sender: TObject); 
begin 
    CreateMainMenu; 
end; 

procedure TForm17.MenuItemClick(Sender: TObject); 
begin 

end; 
Смежные вопросы