Flash - flash com delphi

Top  Previous  Next

Reproduzindo arquivos Flash com o Delphi

 

Neste artigo você aprenderá a reproduzir arquivos Flash (.swf) em sua 

aplicação Delphi e assim incrementar seus softwares. 

O modo que faremos isso será utilizando o  controle de ActiveX 

presente no Delphi.

 

 

1. Instalando o componente para Flash

 

- Menu Component / Import ActiveX Control

- Procure na lista pelo controle do Flash. (Shockwave Flash 1.0)

- se ele pedir um OCX, este é swflash.ocx que está em Windows\System\Macromed\Flash

- Será criado um componente que vai te permitir incorporar uma

  apresentação do Flash em um Form do Delphi ( Paleta: ActiveX,

  o nome deve ser TShockwaveFlash )

 

2. Ponha este componente no FORM, e use os métodos:

 

   ShockwaveFlash1.Movie := 'C:\Nome_do_arquivo_de_flash';

   ShockwaveFlash1.Play;

   

3. Caso queira uma coisa profissional. incorporte num RC (dentro do EXE)

   o OCX do flash (caso seu usuário não tenha instalado) E também coloque

   o arquivo swf... veja:

   

3.1. copie o swflash.ocx e seu arquivo .swf para uma pasta e crie um txt com

     o conteúdo:

 

     SHOCKWAVEFILE RCDATA mussum.swf

     SHOCKWAVEOCX RCDATA swflash.ocx

 

     salve como flash.rc

 

3.2. usando o BRCC32 compile-o assim: "Brcc32 -r -32 c:\Diretorio\Flash.rc"

     isto criará o ".res"

 

3.3. agora no seu projeto:

     {$R *.dfm}

     {$R Flash.res}

  isto coloca o RES junto com o executável

 

3.4. basta "desvomitar" os arquivos no CREATE do seu form principal:

 

procedure TForm1.FormCreate(Sender: TObject);

var

  SystemDir     : array[0..MAX_PATH] of Char;

  SWFDir, AppDir: string;

  Fres          : TResourceStream;

  Ffile         : TFileStream;

begin

  // captura a pasta System do windows

  GetSystemDirectory(@SystemDir,MAX_PATH);

  SWFDir := SystemDir + '\macromed\flash\'// adiciona a pasta padrão do Flash

  GetDir(0,AppDir);

  // não tem flash instalado ainda?

  if not FileExists(SWFDir + 'swflash.ocx') then

  begin

    // cria pasta 

    ForceDirectories(SystemDir + '\macromed\flash');

 // extrai o recurso da OCX

    Fres  := TResourceStream.Create(0'SHOCKWAVEOCX', RT_RCDATA);

    Ffile := TFileStream.Create(SWFDir + 'swflash.ocx', fmCreate);

    try

      Ffile.CopyFrom(Fres,Fres.Size);

    finally

      Fres.Free;

      Ffile.Free;

    end;

 // este "instala" o flash no Windows

    Winexec(PChar('regsvr32 /s' + SWFDir + 'swflash.ocx'), SW_HIDE);

  end;

  // se for a 1ª vez que o programa é executado, ele extrai a animacao

  // em flash: 

  if not FileExists(AppDir + 'mussum.swf') then

  begin

    Fres  := TResourceStream.Create(0,'SHOCKWAVEFILE',RT_RCDATA);

    Ffile := TFileStream.Create('mussum.swf',fmCreate);

    try

      Ffile.CopyFrom(Fres,Fres.Size);

      Fres.Free;

    finally

      Ffile.Free;

    end;

  end;

  // associa o arquivo.

  ShockwaveFlash1.Movie := AppDir + '\mussum.swf';

  // se não rodar imediatamente use ShockwaveFlash1.Play 

end;

   

// Legal né?