Смекни!
smekni.com

Учебно-методическое пособие для студентов физико-математических специальностей вузов Балашов (стр. 13 из 18)

Компонент StatusBar находится на странице Win32 и при добавлении на форму растягивается на всю длину и смещается к нижней части формы, поэтому из свойств расположения у данного компонента доступно только Heigth — высота. На этапе проектирования можно выделить логическое свойство SimplePanel, определяющее, на сколько частей будет разбита строка состояния. Если данное свойство имеет значение True, то панель
не разбивается и доступ можно получить с помощью свойства SimpleText. Если данное свойство имеет значение False, то панель может содержать несколько частей и необходимо воспользоваться свойством Panels, при выборе которого появляется диалоговое окно, изображенное на рисунке 26. Необходимо отметить, что к появлению этого окна приведет и двойной щелчок на компоненте.

Рисунок 26

В диалоговом окне при помощи кнопок задается количество разделов строки состояния. Задать некоторый текст можно посредством свойства Text. На рисунке 27 изображена панель редактирования строки состояния StatusBar, на которой определены три раздела, двум из них уже присвоено значение свойства Text.

Рисунок 27

Обращаться к каждой части панели можно таким образом StatusBar1.Panels[<номер>]. Среди других свойств каждой панели отметим следующие: Bevel — вид рамки, Width — свойство целого типа, определяющее горизонтальный размер, Style — свойство, определяющее вид информации, размещенной в панели. Последнее из них может принимать значения psText — задается текст, psOwerDraw — содержимое, определяющее обработчиком события OnDrawPanel.

Пример 2

Создать программу, у которой в строке состояния будут выдаваться координаты курсора мыши.

Для решения данной задачи поместим на форму компонент StatusBar, для которого с помощью свойства Panels зададим две части, текст первой будет содержать строку 'X=', а текст второй — строку 'Y='. Затем для объекта Form1 на закладке Events выберем событие onMouseMove, которое возникает при любом перемещении мыши. В этой процедуре будем обращаться последовательно к каждой панели и, используя свойство Text, формировать необходимую нам строку, которая состоит из двух частей. Первая — это фиксированная строка, вторая — это функция, переводящая значения X и Y — точки, в которой произошло смещение, в строку. Данная процедура может иметь следующий вид:

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,Y: Integer);

begin

StatusBar1.Panels[0].Text:='X='+IntToStr(x);

StatusBar1.Panels[1].Text:='Y='+IntToStr(y);

end;

Компонент Timer со страницы System предназначен для формирования интервалов времени. Прежде всего, отметим событие, которое связано
с данным компонентом — это onTime — событие, которое возникает всякий раз по истечению заданного интервала времени.

Основные свойства — это логическое свойство Enabled, определяющее, реагирует ли таймер на собственные события (если значение True — то реагирует), и свойство Interval, определяющее временной интервал, через которое произойдет событие OnTime, в миллисекундах.

Задания:

1. Создайте текстовый редактор с системным меню.

2. Создайте графический редактор с системным меню

3. Создайте приложение, которое содержит такие элементы интерфейса, как системное меню, строка подсказки и таймер для выполнения определенной работы.

Лабораторная работа 9. Отображение
мультимедийной информации

Цель: изучить компоненты, позволяющие обрабатывать звуковую
и видеоинформацию.

В современной компьютерной технике существует немало звуковых
и мультимедиа файлов. Коротко охарактеризуем эти группы файлов в данной работе, чтобы иметь хоть какое-то представление о том, с чем предстоит работать. Так как файлы мультимедиа часто содержат звуковую дорожку, было бы не очень правомерно не упомянуть звук в мультимедиа.

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

Другими, часто применяемыми типами звуковых файлов являются файлы цифрового интерфейса музыкальных инструментов (MIDI). В них звук хранится в виде данных о том, на каких инструментах исполняются определенные ноты и как долго они звучат. Если вы знакомы с музыкой, то можете рассматривать содержимое такого файла как цифровой эквивалент дирижерской партитуры. Одним из главных преимуществ MIDI является то, что файлы получаются сравнительно небольшими.

Волновые и MIDI-файлы могут хранить только звук или музыку. Для хранения видеоинформации разработан ряд форматов. Отметим среди них файлы AVI и MPEG. Большинство видеофайлов поддерживают также хранение звуковой дорожки, так что звук воспроизводится синхронно
с картинкой.

Имеется несколько процедур для воспроизведения звуков — это процедуры Веер, MessageBeep и PlaySound.

Наиболее простой процедурой, управляющей звуком, является процедура Beep. Она не имеет параметров и воспроизводит стандартный звуковой сигнал, установленный в Windows, если компьютер имеет звуковую карту и стандартный сигнал задан. Если звуковой карты нет или стандартный сигнал не установлен, звук воспроизводится через динамик компьютера просто в виде короткого щелчка.

Откройте новое приложение, введите в него кнопку, в обработчике щелчка которой напишите одно слово:

procedure TForm1.Button1Click(Sender: TObject);

begin

Beep;

end;

Можете запустить приложение, щелкнуть по кнопке и прослушать стандартный звук Windows или просто щелчок, если стандартный звук
не установлен.

Более серьезной является логическая функция MessageBeep. Она имеет параметр uType, указываюий воспроизводимый звук как идентификатор раздела реестра [sounds], в котором записаны звуки, сопровождающие те или иные события Windows. Значения параметра uType представлены
в таблице 4.

Таблица 4. Значение параметра fdwSound

MB_ICONASTERISK

SystemAsterisk — звездочка

MB_ICONEXCLAMATION

SystemExclamation — восклицание

MB_ICONHAND

SystemHand — критическая ошибка

MB_ICONQUESTION

SystemQuestion — вопрос

MB_OK

SystemDefault — стандартный звук

После запроса звука, функция MessageBeep возвращает управление вызвавшей функции и воспроизводит звук асинхронно. Во время воспроизведения приложение может продолжать выполняться.

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

procedure TForm1.Button1Click(Sender: TObject);

begin

MessageBeep(МВ_ ICONHAND);

end;

После нажатия на кнопку будет слышен тот же стандартный звук Windows, что и при критической ошибке, или если стандартный звук
не установлен, услышите тихий щелчок.

Функция PlaySound позволяет воспроизводить не только звуки событий Windows, но и любые волновые файлы. Функция PlaySound определена следующим образом:

PlaySound(pszSound, hmod, fdwSound).

Параметр pszSound представляет собой строку с нулевым символом
в конце и определяет воспроизводимый звук. Параметр hmod используется, если звук берется из ресурса. Поскольку далее звуком из ресурса пользоваться не будем, то данный параметр всегда можно задавать равным 0. Параметр fdwSound является множеством флагов, которые определяют режим воспроизведения и тип источника звука. В таблице 5 приведены только наиболее важные для воспроизведения произвольных волновых файлов.

Таблица 5. Значение параметра fdwSound

SND_ASYNC Звук воспроизводится асинхронно и функция PlaySound возвращается немедленно после начала воспроизведения. Чтобы прекратить асинхронное воспроизведение волнового файла, надо вызвать PlaySound с параметром pszSound, равным 0
SND_SYNC Синхронное воспроизведение звука события. Функция PlaySound возвращается только после окончания воспроизведения. Если звуковой файл воспроизводится синхронно, то на это время работа приложение будет блокирована
SND_LOOP Воспроизведение звука постоянно повторяется, пока не вызовется PlaySound с параметром pszSound, равным 0. Одновременно надо установить флаг SND_ASYNC асинхронного воспроизведения звука

Продолжение таблицы 5

SND_NOSTOP Если заданный звук не может быть воспроизведен, поскольку ресурсы, необходимые для воспроизведения, заняты воспроизведением другого звука, функция PlaySound немедленно вернет false, не воспроизводя заданного звука. Если данный флаг не указан, функция PlaySound пытается остановить воспроизведение другого звука, чтобы устройство могло быть использовано для воспроизведения нового звука
SND_NOWAIT Если драйвер занят, функция сразу вернется без воспроизведения заданного звука
SND_PURGE Останавливается воспроизведение любых звуков, вызванных в данной задаче

Флаги могут комбинироваться операцией оr. Если функция не может найти указанный звук, то воспроизведения не будет и вернется значение false.