Федеральное государственное образовательное учреждение среднего специального образования Государственный колледж технологии и управления «Колледжный комплекс» Реферат по дисциплине: Основы алгоритмизации и программирования На тему: «Main & Popup menus» Выполнил студент 2 курса Манченков Артем Группа 2АСУ-2 Проверил преподаватель ____________________________ Железнодорожный 2011 год Содержание 1.Введение В данном реферате рассказывается о двух базовых компонентах среды программирования С++ - Main и Popup меню. C++ - язык программирования общего назначения, сочетает свойства как высокоуровневых, так и низкоуровневых языков. В сравнении с его предшественником — языком C, — наибольшее внимание уделено поддержке объектно-ориентированного и обобщённого программирования. Название «C++» происходит от языка C, в котором унарный оператор ++ обозначает инкремент переменной. Являясь одним из самых популярных языков программирования, C++ широко используется для разработки программного обеспечения. Область его применения включает создание операционных систем, разнообразных прикладных программ, драйверов устройств, приложений для встраиваемых систем, высокопроизводительных серверов, а также развлекательных приложений (например, видеоигры). Существует несколько реализаций языка C++ — как бесплатных, так и коммерческих. Их производят Проект GNU, Microsoft, Intel и Embarcadero (Borland). C++ оказал огромное влияние на другие языки программирования, в первую очередь на Java и C#. При создании C++ Бьёрн Страуструп стремился сохранить совместимость с языком C. Множество программ, которые могут одинаково успешно транслироваться как компиляторами C, так и компиляторами C++, довольно велико — отчасти благодаря тому, что синтаксис C++ был основан на синтаксисе C. 2.MainMenu Компонент MainMenu расположен на вкладке Standard Палитры компонентов, пример на рисунке 1: Рисунок 1. Компонент Main Menu из палитры компонентов Нажимаем на левую кнопку мыши и перетаскиваем значок меню на нашу форму. Где он будет располагаться - неважно, при запуске программы наше меню все равно будет там, где ему и положено быть - наверху нашей формы, как на рисунке 2. Рисунок 2. Компонент Main Menu на форме Чтобы в меню добавить пункты разных видов, надо сделать двойной щелчок на расположенном на форме компоненте MainMenu1. Откроется форма, в которой вы сможете создать пункты нашего меню визуальным образом, рисунок 3. Рисунок 3. Редактирование меню Рисунок 4. Редактирование текста пункта меню Для этого надо просто напечатать заголовок в пустом прямоугольнике, либо вписать нужное название в свойство Caption, изображение на рисунке 4. Если щелкнуть мышкой на прямоугольнике с пунктом меню, то появятся два новых пустых прямоугольника - снизу и справа, как на рисунке 5. Рисунок 5. Вид меню на стадии разработки В эти прямоугольники можно напечатать очередные пункты нашего меню. Часто у подпунктов меню есть свои подпункты. Для создания такого подпункта надо щелкнуть правой кнопкой мыши на нужном пункте меню и в контекстном меню выбрать Create Submenu, изображенном на рисунке 6. Рисунок 6. Контекстное меню пункта меню При необходимости у созданных подменю можно создавать собственные подменю и т. д. Но особенно этим увлекаться не следует - слишком большая вложенность обычно не нужна. Для создания заготовки обработчика для пункта меню достаточно на нем сделать двойной щелчок мышкой. У меню может быть картинка (за это отвечает свойство Bitmap), оно может быть активным и неактивным (свойство Enabled). Правильнее картинки задавать не отдельно для каждого пункта меню, а с помощью компонента ImageList, представляющего из себя набор картинок. В этом случае в свойство Images для всего меню записываем имя компонента ImageList (по умолчанию это будет ImageList1), и затем для каждого пункта меню задаем свойство ImageIndex, которое и будет задавать номер картинки из ImageList. Кроме того несколько пунктов меню могут объединяться в группу. Для такого объединения вы должны, во-первых, задать для всех этих пунктов меню одинаковое значение свойства GroupIndex. Во-вторых, необходимо установить у каждого из них свойство RadioItem в true. И в-третьих, надо написать код, который будет устанавливать отметку рядом с выбранным пунктом меню. За это отвечает свойство Checked. Код, например, может быть таким: void __fastcall TForm1::Subitem1Click(TObject *Sender) { Subitem1->Checked=true; //Действия при выборе первого пункта меню } void __fastcall TForm1::Subitem2Click(TObject *Sender) { Subitem2->Checked=true; //Действия при выборе первого пункта меню } Обратите внимание, что если некоторому пункту меню установить свойство Checked в true, то у остальных пунктов из этой же группы оно автоматически установится в false. Теперь при выборе пункта меню из группы рядом с ним появится точка как на рисунке 7. Рисунок 7. Пример подменю меню 3.PopupMenu Компонент PopupMenu также расположен на вкладке Standard Палитры компонентов, пример на рисунке 8. Рисунок 8. Компонент PopupMenu из палитры компонентов Выносится он также перетаскиванием на форму либо двойным щелчком мышки. Добавление пунктов для него происходит точно так же, как и для главного меню. Добавление обработчиков тоже делается точно так же. Для того чтобы приписать контекстное меню к какому-нибудь компоненту на форме, мы должны задать у какого-либо компонента свойство PopupMenu. Вот, например, создадим самую обычную кнопку (Button) и зададим ей свое контекстное меню, которое вызывается правой кнопкой мышки, как на рисунке 8. Рисунок 8. Создание кнопки (Button) с PopupMenu Рисунок 9. Задается свойство PopupMenu После чего выносим компонент PopupMenu на форму и создаем разделы как на рисунке 10. Рисунок 10. Создание PopupMenu к нашему объекту. После чего запускаем нашу программу и теперь при щелчке правой кнопкой мыши на компоненте контекстное меню и появится, как на рисунке 11. Рисунок 11. Работа созданной программы. При необходимости контекстное меню можно вызывать и другим способом. Например, нам надо, чтобы оно появлялось не всегда, а только при выполнении некоторого условия (скажем, если мы щелкнули на определенном месте формы). В этом случае нам надо для показа меню вызвать его метод Popup. У этого метода два параметра - X и Y того места, где контекстное меню должно появится. Вот пример использования этого метода: void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (X<30) { //Преобразовываем координаты TPoint point = ClientToScreen(Point(X, Y)); //Показываем меню PopupMenu1->Popup(point.x, point.y); } } В приведенном примере контекстное меню появится только если мы щелкнули на форме на расстоянии не больше чем 30 пикселов от левого края. Еще раз обратите внимание, что параметры X и Y у метода Popup контекстного меню - это координаты относительно всего экрана. В метод же FormMouseDown передаются координаты щелчка мыши относительно формы. Для преобразования одних координат в другие используем метод ClientToScreen.