Контекстное всплывающее меню — компонент PopupMenu

Контекстное меню привязано к конкретным компонентам. Оно всплывает, если во время, когда данный компонент в фокусе, пользователь щелкнет правой кнопкой мыши. Обычно в контекстное меню включают те команды главного меню, которые в первую очередь могут потребоваться при работе с данным компонентом.

Контекстному меню соответствует компонент PopupMenu. Поскольку в приложении может быть несколько контекстных меню, то и компонентов PopupMenu может быть несколько. Оконные компоненты: панели, окна редактирования, а также метки и др. имеют свойство PopupMenu, которое по умолчанию пусто, но куда можно поместить имя того компонента PopupMenu, с которым будет связан данный компонент.

Формирование контекстного всплывающего меню производится с помощью Конструктора Меню, вызываемого двойным щелчком на PopupMenu, точно так же, как это делалось для главного меню. Обратим только внимание на возможность упрощения этой работы. Поскольку разделы контекстного меню обычно повторяют некоторые разделы уже сформированного главного меню, то можно обойтись копированием соответствующих разделов. Для этого, войдя в Конструктор Меню из компонента PopupMenu, щелкните правой кнопкой мыши и из всплывшего меню выберите команду Select Menu (выбрать меню). Вам будет предложено диалоговое окно, в котором вы можете перейти в главное меню. В нем вы можете выделить нужный вам раздел или разделы (при нажатой клавише Shift выделяются разделы в заданном диапазоне, при нажатой клавише Ctrl можно выделить совокупность разделов, не являющихся соседними). Затем выполните копирование их в буфер обмена, нажав клавиши Ctrl-C. После этого опять щелкните правой кнопкой мыши, выберите команду Select Menu и вернитесь в контекстное меню. Укажите курсором место, в которое хотите вставить скопированные разделы, и нажмите клавиши чтения из буфера обмена — Ctrl-V. Разделы меню вместе со всеми их свойствами будут скопированы в создаваемое вами контекстное меню.

В остальном работа с PopupMenu не отличается от работы с MainMenu. Только не возникает вопросов объединения меню разных форм: контекстные меню не объединяются.

Контрольні питання

1. Навести характеристику поняття головного та локального меню прикладного застосування

2. Навести характеристику компонентів меню


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.4: ОБРОБКА ВИКЛЮЧНИХ СИТУАЦІЙ

Лекція №46 –Обробка виключень

План заняття

1. Характеристика поняття глобальна обробка виключень

2. Характеристика поняття локальна обробка виключень

 

В Delphi введены два уровня обработки исключительных си­туаций: локальная и глобальная обработка. Глобальная обработка исключений производится только в том случае, если для возник­шей исключительной ситуации не создан локальный обработчик.

Глобальная обработка исключений осуществляется с помощью объекта Application,который есть у любого приложения. Дан­ный объект генерирует событие OnExceptionв случае получения от системы сообщения о возникновении ошибки. Глобальная обра­ботка ошибок реализуется путем создания обработчика этого собы­тия. По умолчанию при возникновении любых динамических оши­бок вызывается метод HandleException (Sender: Object),который выводит на экран окно, содержащее информацию об ошибке. Данный метод не устраняет причины исключения, а только форсированно прекращает выполнение приложения.

Для того чтобы создать собственный глобальный обработчик исключения, удобно использовать компонент ApplicationEvents, который появился только в Delphi 5. Следует помнить, что в бо­лее ранних версиях Delphi такой компонент отсутствует, поэто­му создание глобального обработчика исключений будет для про­граммиста более трудоемким.

Необходимый код обработки исключительной ситуации по­мещается в обработчик события OnExceptionкомпонента ApplicationEvents. Этот обработчик создается с помощью Инспек­тора объектов.

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

Локальная обработка исключений. Локальная обработка ис­ключений осуществляется при помощи двух конструкций: try. . exceptи try. . finally.Эти конструкции очень похо­жи в использовании и описании, но имеют различное назначение.

В первой части этих конструкций, то есть в блоках try,запи­сываются операторы приложения, выполнение которых может привести к возникновению исключительной ситуации, например, открытие файла или обработка данных, введенных пользователем. Н блоке tryможет содержаться несколько операторов.

Конструкция try. . exceptимеет две секции и записывается и таком формате:

Здесь Операторы_1 - это блок операторов, выполнение ко­торых может привести к ошибке, а Операторы__2 - блок опера­торов, которые выполняются при возникновении ошибки.

Конструкция try. .except используется для перехвата ис­ключительной ситуации и обеспечивает возможность ее дальней­шей обработки, то есть выработки соответствующей реакции на I возникшую ошибку.

В том случае, если при выполнении операторов из блока try возникла исключительная ситуация, управление передается в сек- js цию except. В противном случае операторы секции except игнорируются. Операторы секции except служат для того, что- I бы ликвидировать исключительную ситуацию и тем самым вое- > становить работоспособность программы. Когда используется I конструкция try. .except, для обрабатываемых с ее помощью исключений глобальный обработчик не вызывается.

Если возникает необходимость анализировать класс исключи­тельной ситуации с целью ее обработки, разработчик приложения \ может разбивать секцию except на несколько частей с помощью конструкции on. .do. Такая конструкция применяется в случае, если в зависимости от класса исключения должны производиться различные действия по обработке этого исключения. Данная кон-струкция имеет следующий синтаксис:

Здесь Оператор_1 - это оператор обработки исключения указанного класса, Опвратор__2 - является оператором, выпол­няемым в случае, если исключительная ситуация не относится к заданному классу. В качестве идентификатора выступает произ-вольное имя переменной, заданное программистом. Идентифика­тор указывать необязательно.. Он представляет собой экземпляр класса исключения, который может быть использован для доступа к объекту возникшего исключения. Эта переменная является лая кальной и доступна только внутри данной конструкции.

Если класс возникшей исключительной ситуации не совпадает с указанным, то выполняется оператор, приведенный после слова else. В случае использования нескольких конструкций on. . do, элемент else должен располагаться в конце секции except, чтобы относиться ко всему набору конструкций on. . do.

 

Приложение, содержащее данную процедуру, предполагает выполнение следующих операций по нажатию кнопки Buttonl:

1)Создается файл C:\filel.txt, который затем открывается на запись.

2)Уже существующий файл C:\file2.txt открывается на чтение.

3)Содержимое второго файла переписывается в первый.

При возникновении какой-либо ошибки пользователю выдает­ся соответствующее сообщение.

Конструкция try. . finallyиспользуется в случае, когда необходимо, чтобы некоторые действия были обязательно выпол­нены, в независимости от того, произошла ошибка или нет (на­пример, необходимо в любом случае освободить используемую оперативную память или закрыть какой-либо файл). Данная кон­струкция имеет такой формат: •

Здесь Операторы_1 - это операторы, выполнение которых может привести к ошибке, а Операторы_2 - это операторы, ко­торые должны быть обязательно выполнены.

Отличие данной конструкции от конструкции try. . exceptсостоит в том, что она не ликвидирует исключительную ситуа­цию, а лишь обеспечивает обязательное выполнение определен­ных действий. Поэтому если возникла такая ситуация, то после выполнения операторов, расположенных в секции finally,про­исходит обращение к глобальному обработчику исключения. Если программист не создал своего глобального обработчика, то будет выдано стандартное сообщение о возникшей ошибке и выполне­ние программы будет остановлено.

Конструкции try. .exceptи try. .finallyдолжны раз­мещаться одна в другой, то есть быть вложенными.

Могут возникать ситуации, когда необходимо программно вы­зывать исключительную ситуацию. Оператор Raiseпозволяет создать объект исключения - экземпляр класса TExceptionили его потомка. Данный оператор записывается в таком формате:

Raise ExceptionClass.Create;

Здесь в качестве ExceptionClassиспользуется необходи­мый класс исключительной ситуации. Вместо метода Createдля создания объекта исключения могут использоваться и другие ме­тоды, приведенные выше (например метод CreateFmtHelp).

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

Ниже показан пример вызова исключительной ситуации.

В данном примере исключительная ситуация генерируется в случае, когда при вызове функции Range ее параметр Resultвыходит за пределы, определяемые параметрами Minи Мах.Со­общение, указанное в качестве параметра метода CreateFmt, будет выводиться на экран в качестве стандартного. Другими сло­вами, в случае возникновения данного исключения Свойство Messageкласса TExceptionприобретает значение, равное за­данной строке.

 

Конрольні питання

1. Надати характеристику поняття глобальна обробка виключень

2. Надати характеристику поняття локальна обробка виключень

 


АУДИТОРНЕ ЗАНЯТТЯ

ЗМІСТОВИЙ МОДУЛЬ 6: ПРОГРАМУВАННЯ З ГРАФАМИ. ВІЗУАЛЬНІ КОМПОНЕНТИ. БАЗИ ДАНИХ

ТЕМА 6.4: ОБРОБКА ВИКЛЮЧНИХ СИТУАЦІЙ








Дата добавления: 2014-12-01; просмотров: 1494;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

Поделитесь с друзьями:

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.011 сек.