4620

Графические возможности Delphi: Программирование средств мультимедиа

Практическая работа

Информатика, кибернетика и программирование

Цель работы: изучение классов и компонент Delphi, предназначенных для создания изображений привитие практических навыков программирования простых мультимедиа приложений в визуальной интегрированной среде разработки Delphi. Содержание работы: Соз...

Русский

2012-11-23

301.93 KB

134 чел.

Цель работы:

  1. изучение классов и компонент Delphi, предназначенных для создания изображений;
  2. привитие практических навыков программирования простых мультимедиа приложений в визуальной интегрированной среде разработки Delphi.

Содержание работы:

1. Создание простейших приложений.

2. Проигрывание видеофайлов.

Требования к отчету:

Отчет по работе должен содержать:

  1. название лабораторного занятия, цель работы, порядок выполнения каждого пункта задания, выводы по каждому пункту задания;
  2. указанные в заданиях файлы, сохраненные в личной папке на жестком диске.

II. МЕТОДИКА ВЫПОЛНЕНИЯ РАБОТЫ

1. Программирование изображений

В Delphi имеется несколько классов общего назначения, позволяющих выводить графические изображения на поверхность компонентов. К ним относятся классы: TFont (шрифт), ТРеn (карандаш), TBrush (кисть) и TCanvas (канва).

В составе многих компонентов Delphi имеются свойства Font, Pen, Brush и Canvas соответствующего типа, при помощи которых создаются изображения любых рисунков и текстов. Предком классов TFont, TPen и TBrush является класс TGraphicsObject, происходящий непосредственно от класса TPersistent. Предком класса TCanvas является класс TPersistent.

При изменении графического объекта возникает событие OnChange:

property OnChange: TNotifyEvent;

После возникновения этого события графические объекты отображаются с обновленными значениями своих свойств.

В Delphi имеются компоненты, специально предназначенные для создания графических изображений:

  1.  TImage () – представляет собой удобное средство для отображения готовых графических файлов;
  2.  TShape () – используется для создания на форме простых геометрически фигур: квадратов, кругов, эллипсов и т.п.;
  3.  TPaintBox () – позволяет на этапе выполнения программы создавать несложные рисунки на своей канве Canvas.

Компонент TTimer (), который предназначен для отсчета интервалов реального времени. Он не предназначен для создания графических изображений и является вспомогательным компонентом. Нами он будет использован при создании проектов, содержащих графически компоненты.

Класс TFont определяет характеристики шрифта и свойства, имеющие этот классовый тип, присутствуют в любом компоненте, который может содержать некоторый текст. Характеристики шрифта в классе TFont задаются при помощи следующих свойств:

type TFontCharset = 0..255;

property Charset: TFontCharset nodefault;

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

Константа

Значение

Описание

ANSI_CHARSET

0

Символы ANSI

DEFAULT_CHARSET

1

Задается по умолчанию. Шрифт выбирается только по его имени Name и размеру Size. Если описанный шрифт недоступен в системе, Windows заменит его другим шрифтом

SYMBOL_CHARSET

2

Стандартный набор символов

MAC_CHARSET

77

Символы Macintosh

GREEK_CHARSET

161

Греческие символы

RUSSIAN_CHARSET

204

Символы кириллицы

OEM_CHARSET

255

Определяется кодовой таблицей операционной системы

property Color: TColor;

Определяет цвет символов.

property Height: Integer;

Устанавливает высоту шрифта в пикселях

type TFontName = type string;

property Name: TFontName;

Задает имя шрифта.

type TFontPitch = (fpDefauIt, fpVariable, fpFixed);
property Pitch: TFontPitch;

Задает ширину шрифта и может принимать следующие значения:

  1.  fpDefault - ширина задается типом шрифта,
  2.  fpVariable - ширина символов переменная,
  3.  fpFixed - ширина символов фиксированная.

property Size: Integer;

Задает высоту шрифта в пунктах (1 пункт = 1/72 дюйма).

type TFontStyle = (fsBold, fsltalic, fsUnderline, fsStrikeOut);

TFontStyles = set of TFontStyle;

property Style: TFontStyles;

Задает тип шрифта и в качестве значения может принимать любое множество следующих величин:

  1.  fsBold - полужирный,
  2.  fsltalic - курсив,
  3.  fsUnderline - подчеркнутый,
  4.  fsStrikeOut - перечеркнутый.

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

Компонент TImage

Страница Палитры Компонентов: Additional ()

Иерархия:

TObject→TPersistent→TComponent→TControl→TGraphicControl

Компонент класса TImage используется для размещения на форме некоторой картинки. Файл изображения может быть битовой картой (файл с расширением .bmp), пиктограммой (файл с расширением .iсо), метафайлом (файл с расширением .wmf).

Класс TImage является непосредственным потомком класса TGraphicControl и, следовательно, принадлежит к семейству графических элементов управления.

Основные свойства:

property Canvas: TCanvas;

Предназначается для формирования изображения на этапе выполнения программы.

property Center: Boolean;

Если свойство имеет значение Тruе, изображение выравнивается по центру компонента, в противном случае изображение помещается в левом верхнем углу компонента. По умолчанию имеет значение False.

property Picture: TPicture;

Свойство классового типа TPicture - определяет изображение, помещенное в компоненте.

property Stretch: Boolean;

Если свойство имеет значение True, изображение определяемое свойством Picture, увеличивается или уменьшается до размеров компонента. По умолчанию имеет значение False.

Как и другие графические элементы управления, компонент TImage обрабатывает все события от мыши. События по умолчанию не имеет.

При помещении изображения в компонент TImage на этапе проектирования можно использовать окно задания изображения. Это окно раскрывается при активизации компонента либо при выборе свойства Picture в Инспекторе Объектов. Основное поле окна задания изображения предназначено для размещения выбранной картинки. Кроме этого, в окне имеются следующие кнопки:

  1.  Load  - для загрузки изображения из файла,
  2.  Save  - для записи изображения в файл,
  3.  Clear - для удаления выбранного изображения,
  4.  ОК - для записи в компонент выбранного изображения,
  5.  Cancel - для отмены введенных изменений.

Компонент TTimer

Компонент TTimer предназначен для отсчета интервалов реального времени. Он не предназначен для создания графических изображений и является вспомогательным компонентом.

Страница Палитры Компонентов: System ()

Иерархия:

TObject→TPersistent→TComponent

Таймер класса TTimer является невизуальным компонентом, и его можно отнести к разряду вспомогательных компонентов. Таймер предназначен для инициирования какой-либо операции через заданные промежутки времени.

Основные свойства:

property Enabled: Boolean;

Если свойство имеет значение True, то таймер реагирует на собственное событие OnTimer.

property Interval: Cardinal;

Определяет временной интервал в миллисекундах, после которого появляется событие OnTimer. По умолчанию равно 1000 (1 секунда).

Кроме того, в классе TTimer определено событие OnTimer:

property OnTimer: TNotifyEvent;

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

Класс ТРеn задает характеристики карандаша, при помощи которого создаются изображения различных линий либо контуров.

Основные свойства:

property Color: TColor;

Определяет цвет линии, рисуемой карандашом. По умолчанию цвет черный.

type TPenMode = (pmBlack, pmWhite, pmNop, pmNot, pmCopy, pmNotCopy, pmMergePenNot, pmMaskPenNot, pmMergeNotPen, pmMaskNotPen, pmMerge, pmNotMerge, pmMask, pmNotMask, pmXor, pmNotXor);

property Mode: TPenMode;

Определяет стиль рисования линий карандашом. Может принимать следующие значения:

pmBlack   - всегда изображается черная линия;

pmWhite   - всегда изображается белая линия;

pmNop   - бесцветная линия;

pmNot   - цвет, инверсный цвету экрана;

pmCopy   - цвет определяется значением свойства Color;

pmNotCopy   - цвет, инверсный цвету, заданному в свойстве Color;

pmMergePenNot - комбинация цвета Color и инверсного цвета экрана;

pmMaskPenNot - комбинация цветов, общих у Color и инверсного цвета экрана;

pmMergeNotPen - комбинация цвета экрана и инверсного цвета Color;

pmMaskNotPen   - комбинация цветов, общих у цвета экрана и инверсного цвета и Color;

pmMerge   - комбинация цветов экрана и Color;

pmNotMerge   - цвет, инверсный комбинации цветов экрана и Color;

pmMask   - комбинация цветов, общих у экрана и Color;

pmNotMask   - цвет инверсный комбинации цветов, общих у экрана и Color;

pmXor   - комбинация цветов, присутствующих у цвета экрана или Color,  но не одновременно у обоих;

pmNotXor  - цвет, инверсный комбинации цветов, присутствующих у цвета экрана или Color, но не одновременно у обоих.

По умолчанию цвет линии определяется свойством Color.

type TPenStyle = (psSolid, psDash, psDot, psDashDot, psDashDotDot, psClear, psInsideFrame);

property Style: TPenStyle;

Определяет стиль линии, рисуемой карандашом. Может принимать следующие значения:

psSolid   - сплошная линия (значение по умолчанию),

psDash   - штриховая линия,

psDot   - пунктирная линия,

psDashDot   - штрихпунктирная линия,

psDashDotDot   - штрихпунктирная линия с двумя пунктирами,

psClear   - невидимая линия,

psInsideFrame - линия внутри замкнутой рамки.

property Width: Integer;

Определяет толщину рисуемой линии. Значением по умолчанию является толщина, равная 1 пикселю.

Класс TBrush содержит определение характеристик кисти, которая используется для заливки (закраски) замкнутых областей.

Основные свойства:

property Bitmap: TBitmap;

Bitmap указывает на объект типа TBitmap, содержащий побитовое отображение изображения, размером 8x8 пикселей. Если Bitmap не пустой, то шаблон заполнения определяется именно им, а не свойством Style. В противном случае свойство должно иметь значение nil.

property Color: TColor;

Определяет цвет кисти. Значением по умолчанию является белый цвет.

type TBrushStyle = (bsSolid, bsClear, bsHorizontal, bsVertical, bsFDiagonal, bsBDiagonal, bsCross, bsDiagCross);

property Style.TBrushStyle;

Определяет орнамент кисти. Может принимать следующие значения:

bsSolid  - сплошная раскраска,

bsClear  - отсутствие раскраски,

bsHorizontal - горизонтальные линии,

bsVertical - вертикальные линии,

bsFDiagonal - левые диагональные линии,

bsBDiagonal - правые диагональные линии,

bsCross  - клетка,

bsDiagCross - косая клетка.

Компонент Shape

Страница Палитры Компонентов: Additional ()

Иерархия:

TObject→TPersistent→TComponent→TControl→TGraphicControl

Экземплярами класса TShape являются компоненты-фигуры: круги, эллипсы, прямоугольники и т.п. Эти фигуры могут быть использованы для стилизации вашего приложения.

Класс TShape является непосредственным потомком класса TGraphicControl и так же, как и класс TImage, входит в семейство графических элементов управления.

Основные свойства:

property Brush: TBrush;

Определяет кисть для закрашивания поверхности фигуры.

property Pen: TPen;

Определяет карандаш для рисования контура фигуры.

Type TShapeType = (stRectangle, stSquare, stRoundRect, stRoundSquare, stEllipse, stCircle);

property Shape: TShapeType;

Определяет фигуру, выводимую на экран:

stRectangle - прямоугольник,

stSquare  - квадрат,

stRoundRect - прямоугольник с закругленными краями,

stRoundSquare - квадрат с закругленными краями,

stEllipse  - эллипс,

stCircle  - круг.

Событием по умолчанию для компонента Shape является событие OnDragDrop.

Задание № 1. Создание заставки для приложения

Создайте заставку для приложения.

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

Технология работы

  1. Откройте новое приложение с помощью команды File  New Application. Сохраните проект в каталоге Мои документы\Отчет ЛЗ-07\Задание 1, выполнив команду меню File  Save Project As.
  2. Запустите графический редактор командой Tools  Image Editor.
  3. В графическом редакторе выполните команду File  New  Bitmap File(.bmp).
  4. В появившемся диалоговом окне Bitmap Properties установите параметры:
  5.  Width = 300
  6.  Height = 200
  7.  Colors = SuperVGA(256 colors)
  8. Создайте произвольное изображение, например, такое как показано на рис. 1.

Рис. 1. Создание заставки в графическом приложении

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

После выбора цвета для символов и фона следует выполнить команды Edit  Select All и Edit  Cut для очистки рисунка. После этого вставить приведенный выше текст.

  1.  Выполните команду File  Save и сохраните изображение в файле с именем zast.bmp.
  2.  Поместите на форму компонент TImage (страница Additional – кнопка Image ).
  3.  Выберите свойство Picture и войдите в редактор свойств (кнопка с тремя точками).
  4.  В появившемся окне Picture Editor нажмите кнопку Load и выберите файл zast.bmp.
  5.  Установите свойство AutoSize компонента TImage в True.
  6.  Поместите на форму компонент TTimer (страница System – кнопка Timer ) и установите свойство Interval равным 5000. Вид формы показан на рис. 2.
  7.  Активизируйте компонент Timer1 двойным щелчком и создайте следующий обработчик события OnTimer:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 Image1.Free;

 Timer1.Free;

end;

  1.  Сохраните проект.

Рис. 2. Вид формы

  1.  Запустить проект на выполнение.
  2.  Измените обработчик события OnTimer так, чтобы заставка периодически появлялась и исчезала:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

if Image1.Visible=True then

 begin

  Timer1.Interval:=8000; Image1.Hide;

 end

 else

 begin

  Timer1.Interval:=2000; Image1.Show;

 end;

end;

  1.  Запустите проект на выполнение. Заставка должна появляться и отображаться в течение 2 с, затем следует пауза в 8 с, а затем заставка вновь появляется на 2 с.
  2.  Сохраните проект.

Задание № 2. Создание приложения, демонстрирующего динамическое изменение изображения

Создать приложение, демонстрирующего вращение Луны вокруг Земли.

Технология работы

  1. Откройте новое приложение с помощью команды File  New Application. Сохраните проект в каталоге Мои документы\Отчет ЛЗ-07\Задание 2, выполнив команду меню File  Save Project As.
  2.  Поместите на форму компонент TTimer (страница System – кнопка Timer ).
  3.  Установите его свойство Interval равным 55. Через каждые 55 миллисекунд будет генерироваться событие OnTimer, которое будет использоваться для перемещения по форме компонента Shape2.
  4. Поместите на форму компонент TShape (страница Additional – кнопка ) с именем Shapre1 (этот компонент будет изображать Землю).
  5. Установить следующие значения для его свойств:
  6.  Shape stCircle
  7.  Height 121
  8.  Width 121
  9.  Left  240
  10.  Top  104
  11. Выберите свойство Brush и дважды щелкните по нему мышью. В Инспекторе Объектов дополнительно появились два свойства: Color и Style. Установить свойство Color равным clBlue.
  12. Выберите свойство Pen и дважды щелкните по нему мышью. В Инспекторе Объектов появились дополнительные свойства. Установить свойство Color равным clBlue.
  13. Поместите на форму компонент TShape с именем Shape2 (этот компонент будет изображать Луну).
  14. Установите следующие значения для его свойств:
  15.  Shape stCircle
  16.  Height 41
  17.  Width 41
  18.  Left  400
  19.  Top  152
  20. Выберите свойство Brush и дважды щелкните по нему мышью. Установите свойство Color равным clYellow.
  21. Выбрите свойство Pen и дважды щелкните по нему мышью. Установите свойство Color равным clYellow.
  22. В верхней части формы разместите компонент TLabel (страница Standard – кнопка Label ). Его свойство Caption установить равным ‘Вращение Луны вокруг Земли’.
  23. Установите свойства:
  24.  Aligh  alTop
  25.  Alignment  taCenter
  26.  AutoSize  True
  27.  Transparent True
  28. Войдите в свойство Font и установите:
  29.  Font  Courier New
  30.  Charset  RUSSIAN_CHARSET
  31.  Color   красный
  32.  Size   16
  33.  Style  bsBold = True

Форма будет иметь вид, показанный на рис. 3.

  1. Создайте обработчик события OnTimer

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 x:=x+0.1;

 Shape2.Left:=265+trunc(150*cos(x));

 Shape2.Top:=150-trunc(150*sin(x));

end;

Рис. 3. Вид формы, моделирующей вращение Луны вокруг Земли

  1. Переменную x объявите в области глобальной по отношению к процедуре TForm1.Timer1Timer, для чего после

uses

 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls;

вставьте описание:

var

 x: real;

  1. Инициализируйте x нулем, для чего после:

procedure TForm1.Timer1Timer(Sender: TObject);

begin

 x:=x+0.1;

 Shape2.Left:=265+trunc(150*cos(x));

 Shape2.Top:=150-trunc(150*sin(x));

end;

вставьте следующее:

begin

 x:=0;

  1. Запустите приложение.
  2. Измените свойство Transparent компонента Label1 в False и посмотрите, что изменилось.
  3. Сохраните приложение.

Задание № 3. Создание приложения, содержащего круговую диаграмму

Создайте приложение, содержащее круговую диаграмму.

Технология работы

  1. Откройте новое приложение с помощью команды File  New Application. Сохраните проект в каталоге Мои документы\Отчет ЛЗ-07\Задание 3, выполнив команду меню File  Save Project As.
  2. Поместите на форму компонент TPaintBox (страница System - кнопка ) и установить его размеры
  3.  Height  250
  4.  Width  250
  5. В Инспекторе Объектов перейдите на вкладку Events и дважды щелкните по правому полю в строке события OnPaint.
  6. Запишите следующий обработчик события OnPaint:

procedure TForm1.PaintBox1Paint(Sender: TObject);

procedure sector(clr:TColor;angle1,angle2:real;msg:string);

 Var x1,x2,y1,y2:integer;

 begin

   PaintBox1.Canvas.Brush.Color:=clr;

   x1:=trunc(cos(angle1)*PaintBox1.Width/2+PaintBox1.Width/2);

   y1:=PaintBox1.Height - trunc(sin(angle1)*PaintBox1.Height/2+PaintBox1.Height/2);

   x2:=trunc(cos(angle2)*PaintBox1.Width/2+PaintBox1.Width/2);

   y2:=PaintBox1.Height-trunc(sin(angle2)*PaintBox1.Height/2+PaintBox1.Height/2);

   PaintBox1.Canvas.Pie(0,0,PaintBox1.Width,

   PaintBox1.Height,x1,y1,x2,y2);

   PaintBox1.Font.Name:='Arial';

   PaintBox1.Font.Size:=8;

   PaintBox1.Font.Color:=clBlack;

   PaintBox1.Font.Style:=[fsBold];

   PaintBox1.Canvas.TextOut(trunc((x1+x2)/2-20),trunc((y1+y2)/2),msg);

 end;

begin

 sector(clRed,0,pi/3,'16,5%');

 sector(clWhite,pi/3,5*pi/6,'25%');

 sector(clBlue,5*pi/6,7*pi/5,'28,4%');

 sector(clYellow,7*pi/5,2*pi,'30%');

end;

Для рисования сектора круга в этом обработчике определена процедура sector с параметрами:

  1.  cls  цвет, которым закрашивается сектор;
  2.  angle1 начальный угол;
  3.  angle2 конечный угол;
  4.  msg  текст в секторе.

Рис. 4. Результат работы программы, изображающей круговую диаграмму

  1. Откомпилируйте и выполните приложение. Должно получиться приблизительно так, как показано на рис. 4.
  2. Измените высоту и ширину компонента PaintBox1, в том числе и установите их не одинаковыми. Посмотрите, к чему это приведет.
  3. Добавьте в диаграмму еще один сектор.
  4. Сохраните проект.

2. Проигрывание видеофайлов

В Delphi имеется компонент TMediaPlayer , расположенный на странице System, — универсальный проигрыватель аудио- и видео- информации.

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

Пользовательский интерфейс медиаплейера имеет ряд кнопок, управляемых мышью или клавишей пробела и клавишами со стрелками.

Каждой кнопке медиаплейера соответствует метод, осуществляющий по умолчанию требуемую операцию: Play, Pause, Stop, Next, Previous, Step, Back, StartRecording, Eject.

Тип устройства мультимедиа, с которым работает медиаплейер, определяется его свойством DeviceType. Если устройство мультимедиа хранит объект воспроизведения в файле, то имя файла задается свойством FileName. По умолчанию свойство DeviceType имеет значение dtAutoSelect. Это означает, что медиаплейер пытается определить тип устройства, исходя из расширения имени файла FileName.

Еще одно свойство MediaPlayerAutoOpen. Если оно установлено в true, то медиа-плейер пытается открыть устройство, указанное свойством DeviceType, автоматически во время своего создания в процессе выполнения приложения.

Воспроизведение видеоинформации по умолчанию производится в окно, которое создает само открытое устройство мультимедиа. Однако это можно изменить, если в свойстве Display указать оконный элемент, в котором должно отображаться изображение. Это может быть, например, форма или панель. Можно также задать в свойстве DisplayRect типа TRect (свойство только времени выполнения) прямоугольную область этого окна, в которую должно выводиться изображение. Для задания свойства DisplayRect можно использовать функцию Rect.

Свойства Notify и Wait действуют только на один очередной метод. Поэтому их значения надо каждый раз восстанавливать в обработчиках событий OnClick или OnNotify.

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

Диалоги открытия и сохранения файлов

Компоненты TOpenDialog () — диалог «Открыть файл» и ТSaveDialog () — диалог «Сохранить файл как...», расположенные на странице Dialogs, используются чаще всего, в большинстве приложений (рис. 5).

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

 

Рис. 5. Стандартные окна Открытия и сохранения файлов

Типы искомых файлов, появляющиеся в диалоге в выпадающем списке Тип файла задаются свойством Filter. В процессе проектирования это свойство проще всего задать с помощью редактора фильтров, который вызывается нажатием кнопки с многоточием около имени этого свойства в Инспекторе Объектов. При этом открывается окно редактора. В его левой панели Filter Name вы записываете тот текст, который увидит пользователь в выпадающем списке Тип файла диалога. А в правой панели Filter записываются разделенные точками с запятой шаблоны фильтра.

Свойство FilterIndex определяет номер фильтра, который будет по умолчанию показан пользователю в момент открытия диалога. Например, значение FilterIndex = 1 задает по умолчанию первый фильтр.

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

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

Свойство Title позволяет вам задать заголовок диалогового окна. Если это свойство не задано, окно открывается с заголовком, определенным в системе. Но вы можете задать и свой заголовок, подсказывающий пользователю ожидаемые действия. Например, «Укажите имя открываемого файла».

Свойство Options определяет условия выбора файла. Множество опций, которые вы можете установить программно или во время проектирования, включает:

ofAllowMultiSelect

Позволяет пользователю выбирать несколько файлов

ofCreatePrompt

В случае, если пользователь написал имя несуществующего файла, появляется замечание и запрос, надо ли создать файл с заданным именем

ofEnableIncludeNotify

Разрешает посылать в диалог сообщения

ofEnableSizing

Разрешает пользователю изменять размер диалогового окна

ofExtensionDifferent

Этот флаг, который можно прочитать после выполнения диалога, показывает, что расширение файла, выбранного пользователем, отличается от DefaultExt

ofFileMustExist

В случае, если пользователь написал имя несуществующего файла, появляется сообщение об ошибке

ofHideReadOnly

Удаляет из диалога индикатор Открыть только для чтения

ofNoChangeDir

После щелчка пользователя на кнопке OK восстанавливает текущий каталог, независимо от того, какой каталог был открыт при поиске файла

ofNoDereferenceLinks

Запрещает переназначать клавиши быстрого доступа в диалоговом окне

ofNoLongNames

Отображаются только не более 8 символов имени и трех символов расширения

ofNoNetworkButton

Убирает из диалогового окна кнопку поиска в сети. Действует только если флаг ofOldStyleDialog включен

ofNoReadOnlyReturn

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

ofNoTestFileCreate

Запрещает выбор в сети защищенных файлов и не доступных дисков при сохранении файла

ofNoValidate

Не позволяет писать в именах файлов неразрешенные символы, но не мешает выбирать файлы с неразрешенными символами

ofOldStyleDialog

Создает диалог выбора файла в старом стиле

ofOverwritePrompt

В случае, если при сохранении файла пользователь написал имя существующего файла, появляется замечание, что файл с таким именем существует, и запрашивается желание пользователя переписать существующий файл

ofPathMustExist

Генерирует сообщение об ошибке, если пользователь указал в имени файла несуществующий каталог

ofReadOnly

По умолчанию устанавливает индикатор Открыть только для чтения при открытии диалога

ofShareAware

Игнорирует ошибки нарушения условий коллективного доступа и разрешает, несмотря на них, производить выбор файла

ofShowHelp

Отображает в диалоговом окне кнопку Справка

По умолчанию все перечисленные опции, кроме ofHideReadOnly, выключены. Но, как видно из их описания, многие из них полезно включить перед вызовом диалогов.

Если вы разрешаете с помощью опции ofAllowMultiSelect множественный выбор файлов, то список выбранных файлов можно прочитать в свойстве Files типа TStrings.

В компонентах диалогов открытия и сохранения файлов предусмотрена возможность обработки ряда событий. Такая обработка может потребоваться, если рассмотренных опций, несмотря на их количество, не хватает, чтобы установить все диктуемые конкретным приложением ограничения на выбор файлов. Событие OnCanClose возникает при нормальном закрытии пользователем диалогового окна после выбора файла. При отказе пользователя от диалога — нажатии кнопки Отмена, клавиши Esc и т.д. событие OnCanClose не наступает. В обработке события OnCanClose вы можете произвести дополнительные проверки выбранного пользователем файла и, если по условиям вашей задачи этот выбор недопустим, вы можете известить об этом пользователя и задать значение false передаваемому в обработчик параметру CanClose. Это не позволит пользователю закрыть диалоговое окно.

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

Задание № 4. Проигрывание видеофрагментов

Создайте приложение для проигрывания видеофрагментов.

Технология работы

Внешний вид приложения:

  1. Откройте новое приложение с помощью команды File  New Application. Сохраните проект в каталоге Мои документы\Отчет ЛЗ-07\Задание 4, выполнив команду меню File  Save Project As.
  2. Разместите на форме объекты TPanel () и TButton () cо страницы Standart.
  3. Разместите на форме объект TOpenDialog () cо страницы Dialogs
  4. Разместите на форме объект ЕMediaPlayer () cо страницы System. Вид построенной формы показан на рис. 6.

Рис. 6. Вид формы с медиаплейером

  1. Для кнопки Button1 установите свойство Caption как Загрузить.
  2. Выделите компонент MediaPlayer1 и в Диспетчере объектов установите в свойстве Display значение Panel1.
  3. Выделите компонент OpenDialog1 и в Диспетчере объектов в свойстве Filter щелкните на кнопке . В открывшемся диалоге Filter Editor введите значения, показанные на рис. 7.

Рис. 7. Заполнение окна Filter Editor

  1. Определите обработчик события OnClick для кнопки Button1:

procedure TForm1.Button1Click(Sender: TObject);

begin

 if OpenDialog1.Execute then

   begin

     MediaPlayer1.FileName:=OpenDialog1.FileName;

     MediaPlayer1.Open;

     MediaPlayer1.Play;

   end;

end;

  1. Запустите приложение и проверьте его работу на файле Usb.avi, находящимся в папке Файлы для ЛЗ-07.
  2. Сохраните приложение.

 

А также другие работы, которые могут Вас заинтересовать

75428. Передумови розвитку мехатроніки і сфери застосування мехатронних систем. Класифікаційні ознаки мехатроніки 53.5 KB
  Передумови розвитку мехатроніки і сфери застосування мехатронних систем. Класифікаційні ознаки мехатроніки Останніми роками виникла і бурхливо розвивається у всьому світі нова галузь науки і техніки мехатроніка. Вузли модулі і системи мехатроніки МС стають основою технологічних машин і агрегатів з новими властивостями для різних галузей промисловості а також вони можуть бути використані при розробці периферійних пристроїв устроїв...
75429. Концепція побудови мехатронних систем. Визначення і термінологія мехатроніки 52.5 KB
  Мехатроніка це нова галузь науки і техніки присвячена створенню і експлуатації машин і систем з компютерним управлінням рухом яка базується на знаннях в області механіки електроніки і мікропроцесорної техніки інформатики і компютерного управління рухом машин і агрегатів.
75430. Механічні та електричні інтерфейси сенсорів. Оптикомеханічні і фото імпульсні здавачі 45.5 KB
  Інтерфейси сенсорів залежно від фізичного характеру вхідних змінних стану системи можна розділити на електричні і механічні. До механічних відносяться приєднувальні пристрої для датчиків зворотного звязку приводів (оптикомеханічних, фотоімпульсних, кодових, тахогенераторів, потенціометрів, резольверов)
75431. Основні принципи техніки керування 511 KB
  Механічна енергія з валу електричного двигуна передається до регулювальної передачі в якій швидкість напрям та час тривання обертання стартстоп можуть регулюватися за допомогою механічних пневматичних гідравлічних або електричних сигналів. Це можна здійснити перериваючи неперервний обертовий рух за допомогою додаткового доданого до передачі вимикального механізму. Регульовані передачі. У більшості випадків потужність отримувана на вхідному валі передачі привідному є постійна.
75432. Передачі кочення 566.5 KB
  У регулювальних передачах кочення передавання моменту обертання здійснюється за допомогою конусних або кулькових елементів кочення рис. Елементами кочення в регулювальних планетарних передачах є наприклад конусні диски які обертаються планетарно навколо привідного вала рис. Рис. Фрикційна передача з Рис.
75433. Безконтактні вимикачі 32.5 KB
  Давач чи датчик У більшості сучасних словників української мови термін давач подається як єдиний можливий відповідник російського терміну рос. датчик. Слово датчик увійшло в українську як калька з російської і деякі словники фіксують обидва терміни давач та датчик хоч подають останній як менш рекомендований.
75434. Класифікація безконтактних вимикачів за принципом дії: індуктивні, ємкісні, оптичні, магніточутливі (геконові) 67.5 KB
  За вхідними фізичними величинами що підлягають перетворенню давачі бувають: електричні та магнітні; теплових величин; механічних величин; оптичних параметрів; форми та розмірів; акустичних величин; концентрації та складу; іонізаційного випромінення. За фізикохімічними ефектами що лежать в основі роботи вимірювальних перетворювачів розрізняють давачі: резистивні; ємнісні електростатичні; індуктивні та електромагнітні; електричного заряду напруги або струму; зміни геометричних розмірів маси або положення; оптичних ефектів;...
75435. Безконтактний індуктивний давач 129.5 KB
  Спектр застосування індуктивних безконтактних давачів обширний і включає практично всі галузі промисловості де необхідна автоматизація процесів. Переваги безконтактних індуктивних давачів: немає механічного зносу відсутні відмови повязані зі станом контактів...
75436. Давач Хола. Застосування індуктивних безконтактних вимикачів 376 KB
  Зараз знайдені матеріали, які мають досить великий коефіцієнт Холла. Давач Хола можна також використати як пристрій для підрахування кількості обертів. Давачі Холла, що їх виготовляє компанія Honeywell поділяються на лінійні та цифрові.