Связь и интернет Архив Программирование
   
Сделать стартовойСделать закладку            
   ПОИСК  
   
Главная / Pascal и Delphi /
8  Perl
8  PHP
8  JavaScript
8  HTML
8  DHTML
8  XML
8  CSS
8  C / C++
8  Pascal и Delphi
8  Турбо Ассемблер
8  MySQL
8  CASE-технологии
8  Алгоритмы
8  Python
8  Обратная связь
8  Гостевая книга
Новости о мире


Delphi и Flash. Совмещение несовместимого! - Программирование от RIN.RU
Delphi и Flash. Совмещение несовместимого!

Разве возможно совместить Флэш-ролики и Дельфи-приложения. Раньше я думал что НЕТ. Но теперь я знаю не только, что это возможно, но и знаю как это делается!!! И сейчас я вам расскажу об этом. Во-первых хочется отметить преимущества использования флэш-роликов в ваших программах. Если вы сумеете гармонично вписать небольшой флэш-ролик в вашу программу, то несомненно внешний вид программы будет намного привлекательнее (главное не переборщить, увлекаясь дизайном, не надо забывать о том что программа должна быть удобна и проста в использовании! ).


Итак, как же совместить Флэш и Дельфи? (Надеюсь, что у вас Флэш установлен:))


Запустите Дельфи и выберите пункт меню Component->Import ActiveX Control... Перед вами откроется диалоговое окно с заголовком Import ActiveX Control. В разделе Registered Controls выберите Shockwave Flash. В разделе Pallete Page... Выберите страницу в палитре компонентов, на которой будет располагаться установленный компонент (по умолчанию это ActiveX). В разделе Unit Dir Name... путь к папке куда будет установлен компонент.


Нажмите на кнопку Install. Перед вами появится окно, в котором вам нужно будет выбрать в какой пакет будет установлен компонент (вы можете установить как в уже существующий, так и в новый пакет). Затем перед вами появится окно редактирования выбранного пакета и Дельфи вас спросит: "...Package will be rebuilt. Continue?". Ответьте Yes. Все готово теперь можно использовать флэш в ваших приложениях!!!


Теперь, чтобы показать вам как пользоваться этим компонентом, попробуем вместе сделать программу для просмотра *.SWF файлов. Для этого нам понадобятся следующие компоненты: TShockwaveFlash (для удобства назовите его просто Flash1), TTrackBar, TTimer, TOpendialog и три кнопки TButton ("открыть", "старт" и "стоп").


Для начала установим необходимые свойства OpenDialog'a


  • Свойство Filter может быть таким: Флэш-ролики|*.swf

  • Свойство DefaultExt должно быть: *.swf


Для Timer'a нужно установить свойство Interval равным 1.


Для TShockwaveFlash:


  • Name сделайте равным Flash1

  • Свойство Playing установите в false

  • Свойство BGColor, установите как вам хочется (цвет фона)


Теперь напишем обработчик события OnClick для кнопки, которая вызывать OpenDialog:


if open1.Execute then begin
flash1.Movie:=open1.FileName;
trackbar1.Max:=flash1.TotalFrames;
{это делается для того, чтобы потом можно было перемещаю ползунок посмотреть каждый кадр ролика}


В обработчик события OnClick для второй кнопки ("Старт") напишем:


flash1.Play;




Ну тут вообще все просто! Почти таким же образом это будет выглядеть для третьей кнопки ("Стоп"):


flash1.Stop;




Теперь сделаем, чтобы при перемещении ползунка Trackbar'a мы могли посмотреть каждый кадр (событие OnChange):


if Flash1.IsPlaying=true
then Flash1.Stop; {
если ролик проигрывается, то надо его остановить}
flash1.GotoFrame(trackbar1.position);
{открываем кадр номер которого соответствует позиции ползунка}


Ну и наконец осталось сделать чтобы при проигрывании ролика ползунок перемещался, указывая сколько осталось и сколько прошло. Для этого то мы и используем Timer. В обработчик события OnTimer, напишем:


trackbar1.Position:=flash1.CurrentFrame;




Приведу полный код приложения:


unit flash;


interface


uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ComCtrls, StdCtrls, OleCtrls, ShockwaveFlashObjects_TLB, ExtCtrls;


type
TForm1 = class(TForm)
Flash1: TShockwaveFlash;
Button1: TButton;
TrackBar1: TTrackBar;
Open1 : TOpenDialog;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;


procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure TrackBar1Change(Sender: TObject);
procedure Timer1Timer(Sender: TObject);


private
{ Private declarations }
public
{ Public declarations }
end;


var
Form1: TForm1;


implementation
{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin
if open1.Execute then
begin
flash1.Movie:=open1.FileName;
trackbar1.Max:=flash1.TotalFrames;
end;
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
flash1.Play;
end;


procedure TForm1.TrackBar1Change(Sender: TObject);
begin
if Flash1.IsPlaying=true
then Flash1.Stop;
flash1.GotoFrame(trackbar1.position);
end;


procedure TForm1.Button3Click(Sender: TObject);
begin
flash1.Stop;
end;


procedure TForm1.Timer1Timer(Sender: TObject);
begin
trackbar1.Position:=flash1.CurrentFrame;
end;


end.


Ну вот и все. Как оказалось ничего сложного.


Автор статьи: Михаил Христосенко // Development и Дельфи (http://delphid.dax.ru).




 8  Комментарии к статье  8  Обсудить в форуме  8  Обсудить в чате

 
  
  
    Copyright ©  RIN 2003 - 2004      * Обратная связь