Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекції для 3ОТ1.doc
Скачиваний:
10
Добавлен:
21.02.2016
Размер:
16.31 Mб
Скачать

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

  1. Наведіть характеристику MIDI-прикладних застосувань

  2. Наведіть характеристику методів та властивостей MIDI-об’єктів

САМОСТІЙНА РОБОТА СТУДЕНТА

Змістовий модуль 6: програмування з графами

Тема 6.5: організація прикладних застосувань

Самостійне заняття №38 – Інформаційні вікна

План заняття

  1. Характеристика інформаційних вікон

  2. Приклади створення інформаційних вікон Delphi

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

Информационное окно создается с помощью стандартного шаблона либо самостоятельно.

Для того чтобы создать информационное окно с помощью шаблона, необходимо обратиться к базе объектов (выбрать в глав­ном меню среды разработки Delphi пункт Tools \ Repository). За­тем на странице Forms выбрать шаблон формы Aboutbox. В ре­зультате к приложению добавляется новая форма AboutBox с заго­ловком About (см. рис. 7.4). Другой способ - вызвать пункт меню File | New \ Other и в открывшемся диалоговом окне на странице Forms выбрать шаблон About box

Как видно из рис. 7.4, данная форма содержит информацион­ную панель с рисунком (компонент Image) и четырьмя надписями (компоненты Label), а также кнопку ОК для закрытия окна. Про­граммист может по своему усмотрению изменять эту форму, уда­лять и заменять существующие объекты или добавлять новые.

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

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

Вызов информационного окна на экран обычно осуществляет­ся в модальном режиме, то есть с использованием метода ShowModal. Чтобы продолжить работу с приложением, следует закрыть информационное окно.

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

  1. Наведіть характеристику інформаційних вікон

  2. Приведіть приклади створення інформаційних вікон Delphi

САМОСТІЙНА РОБОТА СТУДЕНТА

Змістовий модуль 6: програмування з графами

Тема 6.5: організація прикладних застосувань

Самостійне заняття №39 – Одноекземплярні прикладні застосування

План заняття

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

  2. Характеристика методів та властивостей одноекземплярних прикладних застосувань

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

К решению данной проблемы существует два подхода: блоки­ровка запуска второй копии и активизация уже открытого экземпляра приложения.

Рассмотрим, каким образом реализуется первый подход.

Перед запуском программа просматривает список заголовков открытых в системе окон и проверяет, не открыто ли ее главное окно. Для этого используется API-функция FindWindow, имею­щая такой формат:

FindWindow (lpClassName, lpWindowName: LPCTSR): HWND

Если требуемое окно не найдено, то данная функция возвра­щает нулевое значение, если же окно найдено, то будет возвращен его дескриптор. С помощью параметра lpClassName задается класс искомого окна, а с помощью параметра lpWindowName -его заголовок. Другими словами, если в приложении создана форма Forml класса TForml, то параметру lpClassName зада­ется значение TForml, а параметру lpWindowName устанавли­вается значение свойства Caption данной формыОбращение к функцииFindWindow должно осуществляться только в файле проекта, так как если вызывать данный поиск из модуля главной формы, то к тому времени сама форма будет уже создана и открыта. Следовательно, функция найдет заданное окно, приложение заблокирует само себя и не будет запускаться вообще.

Предположим, что в приложении имеется главная форма Forml класса TForml с заголовком MainForm. Тогда, чтобы сделать данное приложение одноэкземплярным, необходимо:

  1. добавить модуль Windows в список используемых модулей в разделе uses файла проекта;

  2. в тело файла проекта после строки инициализации проекта Application. Initialize добавить код поиска формы сле­дующего вида:

if FindWindow('TForml', 'MainForm') <> О then Application.Terminate;

Теперь, если при запуске приложения в системе будет обнару­жено открытое ранее главное окно данного приложения, то вы­полнение второго его экземпляра будет прерываться.

Программисту следует обратить внимание на ряд моментов, о которых важно помнить. Во-первых, необходимо обязательно включить в файл проекта модуль Windows, потому что будет ис­пользоваться API-функция Windows. Если этого не сделать, то компилятор будет выдавать сообщение об ошибке. Во-вторых, при изменении свойств Name и Caption главной формы нужно изменить соответствующим образом и условие поиска в файле проекта. Кроме того, нельзя исключать теоретическую вероят­ность того, что имя и заголовок главного окна разрабатываемого приложения совпадут с аналогичными свойствами некоторого другого приложения, работающего в системе в текущий момент времени, и тогДа данное приложение нельзя будет запустить. По­этому рекомендуется, по возможности, давать главному окну при­ложения оригинальный заголовок, который не имел бы аналогов среди названий окон наиболее распространенных программ.

Второй подход к созданию одноэкземплярного приложения за­ключается в активизации уже запущенного экземпляра данного приложения. С этой целью применяется API-функция SetFore-groundWindow (hwndWindow: HWND): boolean. При ее использовании то окно, дескриптор которого задан параметром hwndWindow, будет размещено поверх всех открытых окон.

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

Если главное окно приложения уже открыто в системе, то при попытке запуска второго экземпляра приложения функция Find­Window вернет ненулевое значение. В этом случае функция SetForegroundWindow активизирует данное окно и разместит его поверх всех остальных открытых окон.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]