Скачать программу и исходники можно здесь.
Постановка задачи: написать программу для формирования и визуализации меню произвольного уровня вложенности.
В качестве формата хранения данных многоуровневого меню используется формат XML. Для редактирования и визуалиции меню используется Delphi 6 (т.к. данная среда обладает встроенными средствами для работы с форматом XML). Для редактирования меню применяется стандартный компонент TreeView (управление структурой) и два текстовых поля (для редактирования аттрибутов). Для визуализации меню используется стандартный компонент MainMenu. Обработка данных выполняется с помощью рекурсии (естественное решение, следующее из задания и формата хранения данных).
Вот пример файла меню (menu.xml):
<multimenu>
<item name="Zaporozhye State University">
<item name="Guest Book" link="http://www.zsu.edu.ua/?dest=guestbook"/>
<item name="Site Map" link="http://www.zsu.edu.ua/?dest=sitemap"/>
<item name="Telephone Directory" link="http://www.zsu.edu.ua/?dest=contacts"/>
<item name="Links" link="http://www.zsu.edu.ua/?dest=main@links"/>
<item name="Departments">
<item name="Mathematics" link="http://www.zsu.edu.ua/?dest=departments@math"/>
<item name="History" link="http://www.zsu.edu.ua/?dest=departments@history"/>
<item name="Biology" link="http://www.zsu.edu.ua/?dest=departments@biology"/>
<item name="Physics" link="http://www.zsu.edu.ua/?dest=departments@physics">
<item name="Site" link="http://ssem.zsu.zp.ua"/>
</item>
</item>
</item>
<item name="Zliy Pes">
<item name="Miscellaneous">
<item name="New on site" link="http://zliypes.com.ua/etc/renewals.php"/>
<item name="About the project" link="http://zliypes.com.ua/etc/about.php"/>
</item>
<item name="Articles" link="http://zliypes.com.ua/articles"/>
<item name="Мыло автору" link="mailto:val@zliypes.com.ua?Subject=XML Dynamic Menu Builder"/>
</item>
<item name="Search Engines">
<item name="Google" link="http://www.google.com"/>
<item name="AltaVista" link="http://www.av.com"/>
<item name="Yahoo" link="http://www.yahoo.com"/>
<item name="Russian engines" link="http://www.something.com">
<item name="Yandex" link="http://www.yandex.ru"/>
<item name="Апорт" link="http://www.aport.ru"/>
<item name="Rambler" link="http://www.rambler.ru"/>
</item>
</item>
<item name="Office Tools">
<item name="Microsoft Word" link="winword"/>
<item name="Microsoft Excel" link="excel"/>
<item name="Microsoft Access" link="msaccess"/>
</item>
<item name="Accessories">
<item name="Notepad" link="notepad"/>
<item name="MsPaint" link="mspaint"/>
<item name="Calculator" link="calc"/>
<item name="WordPad" link="wordpad"/>
</item>
</multimenu>
Аттрибут link может иметь любое значение, которое "скушает" API команда ShellExecute. В предлагаемом меню реализованы 3 типа линков: http-ссылки, e-mail-адреса и имена exe-программ.
Скачать программу и исходники можно здесь.
19.03.2002 |