
- •Белорусский национальный технический университет
- •Конспект лекций по курсу «конструирование программ и языки программирования»
- •1. Введение Общие понятия
- •Недостатки ms-dos
- •Преимущества Windows
- •Основные концепции Windows
- •Объекты Windows
- •Механизмы сообщения
- •2. Основы визуального программирования в delphi Принцип создания приложений в Delphi
- •Процесс создания исполняемого файла в Delphi
- •3. Стандартные визуальные компоненты Формы
- •4. События, обрабатываемые формой
- •5. Свойства стандартных компонент Общие сведения
- •Компонент Tlabel
- •Компонент tButton
- •Компонент tEdit
- •Компонента tMemo
- •Компонента tCheckBox Это кнопка с независимой фиксацией. Такой компонент обладает следующими свойствами:
- •Компонент tRadioGroup
- •Компонент tСheckListBox
- •Компонент tPanel
- •К омпонент tScrollBar
- •К омпонент tMainMenu
- •Компонент tPopupMenu
- •Компонент tListBox
- •Компонент tComboBox
- •6. Графические компоненты Общие свойства
- •Компонент tImage (отображение картинок)
- •Компонент tShape (стандартные фигуры)
- •Компонент tBevel (кромка)
- •Компонент tChart (построитель графиков)
- •Компонент tPaintBox
- •Компонента tImage
- •Компонента tShape
- •Компонент tBevel
- •Поддержка графических операций
- •Свойство объектов Canvas
- •7. Табличное представление данных
- •Компонент tStringGrid
- •Компонент tDrawGrid
- •8. Дополнительные компоненты Компонент tBitBtn
- •Компонент tSpeedButton
- •Компонент tToolBar
- •9. Организация стандартных диалогов
- •Компонент tOpenDialog и tSaveDialog
- •Компонент tOpenPictureDialog и tSavePictuteDialog
- •Компонент tColorDialog
- •Компонент tFontDialog
- •Компонент tPrintDialog
- •10. Программирование печати документов
- •11. Вывод графических изображений
- •Компонент tProgressBar
- •Компонент tAnimate
- •Компонент tDateTimePicker
- •Компонент tMediaPlayer
- •Компонент tAnimate
- •Средства создания мультимедийных приложений Что такое мультимедиа
- •Компонент tMediaPlayer
- •Два вида программ мультимедиа
- •Пример программы с мультимедиа
- •Обработка исключительных ситуаций
- •Структурная обработка исключительных ситуаций
- •Модель исключительных ситуаций в Delphi
- •Синтаксис обработки исключительных ситуаций
- •Примеры обработки исключительных ситуаций
- •Вызов исключительной ситуации
- •Доступ к экземпляру объекта exception
- •Предопределенные обработчики исключительных ситуаций
- •Исключения, возникающие при работе с базами данных
- •Заключение
- •Создание и использование ini-файлов
- •Развертывание приложений. Локализация и интернационализация приложений
- •Литература
- •12. Управление программой с помощью панели инструментов
- •Компонент tImageList
- •Компонент tToolBar- инструментальная панель
- •13. Создание программы с несколькими формами и средства управления ими
- •14. Создание многостраничного документа
- •Литература
Компонент tPopupMenu
В отличие от главного меню локальное меню постоянно не отображается на экране, а выводится по мере необходимости. Для вызова локального меню используется правая кнопка мыши. Локальное меню является одноуровневым, хотя это и необязательно.
Локальное меню обычно используется для динамического изменения свойств того интерфейсного элемента, над которым в данный момент находится курсор мыши. Локальное меню наряду с изменением свойств интерфейсных элементов обеспечивает доступ к командам. Причем это происходит быстрее, чем если команда вызывается из обычного меню. Во многих случаях отдельные элементы локального меню дублируют наиболее часто используемые команды главного меню. В отличие от главного, локальное меню может быть создано для любого оконного компонента.
Чтобы связать щелчок правой кнопки мыши на соответствующей компоненте необходимо свойству PopupMenu данного компонента присвоить имя локального меню. Например:
Label1.PopupMenu := PopupMenu1;
Пример 1.
Поместим на форму компоненты Memo и PopupMenu. Чтобы войти в Menu Designer, дважды щескните на всплывающем меню. Поместим в это меню три пункта с именами Cut, Copy и Paste. В их обработчиках события OnClick помести следующие строки:
Memo1.CutToClipboard;
Memo1.CopyToClipboard;
Memo1.PasteFromClipboard;
Удалите содержимое свойства Lines компонента Memo, установив его свойство ScrollBars в ssBoth.
Присвойте имя компонента PopupMenu в качестве значения свойству PopupMenu.
Запустите программу и введите какой-нибудь текст. С помощью мыши выделите одно или два слова, затем нажмите правую кнопку мыши. Выбирая из всплывающего меню пункты с именами Cut, Copy и Paste, можно увидеть эффект.
Используя туже программу, выберите всплывающее меню из списка в Object Inspector. Перейдите на страницу Events, дважды щелкнув на событии OnPopup, вставьте следующий текст:
Cut1.Enabled := Memo1.SelLength > 0;
Copy1.Enabled := Cut1.Enabled;
Paste1.Enabled := Clipboard.HasFormat(CF_Text);
В строку Uses модуля добавьте ClipBrd.
Запустив программу снова и убедитесь, что пункты Cut и Copy всплывающего меню оказываются заблокированными, когда нет выделенного текста, который можно было бы выделить и скопировать. Пункт Paste будет недоступен, если нет текста для вставки.
В этом и состоит основное назначение события Popup – предоставить возможность настроить всплывающее меню таким образом, чтобы оно соответствовало текущим условиям.
Множество различных компонентов может быть ассоциировано с одним всплывающим меню посредством своего свойства PopupMenu. Свойство PopupComponent всплывающего меню делает эту связь двухсторонней. Оно сообщает компоненту PopupMenu , поверх какого компонента ему следует всплывать.
Другой пример:
Type
Tform1 : class(TForm);
...
PopupMenu1 : TPopupMenu;
N8 : TMenuItem;
N9 : TMenuItem;
Procedure N8Click;
Procedure N9Click;
end;
Замечание
Для того, чтобы подключить локальное меню к главной форме, необходимо в инспекторе объектов свойству
PopupMenu := PopupMenu1;
В разделе Implementation Unit1 необходимо записать две процедуры, связанные с обработкой команд локального меню:
Procedure Tform1.N8Click;
begin
Form2.ShowModal;
end;
Procedure Tform1.N9Click;
begin
Form3.ShowModal;
end;
Пример 2.
Пусть требуется реализовать локальное меню, по командам которого необходимо выводить в компоненту Label текст с различными способами выравнивания.
Для каждой команды локального меню можно создать обработчик в виде:
Procedure Tform1.Left(Center, Right)Click;
begin
Label1.Allignment := taLeftJustify(taCenter,taRightJustify);
end;
Замечание
Для того, чтобы появлялось локальное меню по нажатию правой кнопки в области компонента Label1 необходимо имя локального меню указать в свойстве PopupMenu компонента Label1.
Для того, чтобы визуально было видно выравнивание текста, необходимо
Label1.AutoSize := false;