Надо проверить, есть ли возможность создавать подменю во время исполнения, помнится, у меня не получалось. Это главное. Остальное не проблема, текст распарсить-то.
Есть мысля. Запитываем содержимым файла массив, состоящий из элементов пользовательского типа:
- Код: Выделить всё
Type MyMenuArray
mmaLevel as Long
mmaKey as String
mmaText as String
mmaCommand as String
end type
затем мы делаем монтаж (банальный open close с get'ом и split'ом) и получаем в виде элементов массива что-то типа этого:
- Код: Выделить всё
'mmaLevel mmaKey mmaText mmaCommand
'0 "0" "File" ""
'1 "1" "New" "CmdNew"
'2 "2" "ProjectA" "CmdA"
'2 "3" "ProjectB" "CmdB"
'2 "4" "Text File" "CmdC"
'1 "5" "-" ""
'1 "6" "Exit" "CmdExit"
'0 "7" "Edit" ""
'1 "8" "Cut" "CmdCut"
'1 "9" "Copy" "CmdCopy"
'1 "10" "Paste" "CmdPaste"
'0 "11" "?" "CmdHelp"
Тут очень важно обратить внимание на то, что в
mmaLevel у нас записывается уровень подменю (то что в текстовых файлах отбивается табом, либо заключается в конструкции begin..end).
Мне кажется все наглядно видно, если 0 значит создаем пункт в строке меню, если 1, то создаем в первой менюшке, если 2, то предыдущий 1 становится заголовком подменю, а этот и остальные помещаются в это подменю. если затем мы встречаем 1, то выходим из подменю и создаем следующий пункт в меню. если сразу встречаем 0, то значит выходим из всех меню и в строке добавляем новый пункт.
Воот. Пункты меню создаются на API (
вот так, например). Sad but true. К сожалению, Controls.add не проканает. И массивы контролов тоже.
Или я чего-то не знаю
