Cursos de Informática Grátis www.megainforcursos.com

12 de outubro de 2012

Como integrar aquivos Flash (.swf) no Delphi


Existe um controle activeX que permite a integração de arquivos “swf “no Delphi. Vamos instalar esse controle activeX para prosseguirmos com nosso exemplo.
No Delphi, acesse o menu Component ► Import ActiveX Control. Em seguida selecione o controle Shockwave Flash que está presente na listagem abaixo do título “Import ActiveX”. Este ActiveX já é instalado junto com o Windows.

Em seguida, clique no botão “Install” situado no canto inferior da tela. Na janela seguinte, cujo o título é “Install Component”, vc deve selecionar em que package vc deseja adicionar esse novo componente.



Vc pode escolher uma das packages já existentes, para isso, na aba cujo o título é “Into existing package”, selecione uma das listadas na combo desta tela e click “Ok”.



Ou, para criar uma nova package, na aba “ into new Package”, em Package file name, defina um path e nome de arquivo para criação da package.



Ao confirmar clickando em "OK" o Delphi irá lhe avisar que a package será reconstruída, “package .... will be rebuilt. Continue? ”.



Confirme, a partir daí o Delphi irá fazer o restante automaticamente e quando terminar, lhe informará que o componente TShockwaveFlash foi instalado com sucesso. Observe agora que o esse componente recém instalado se encontra presente na palheta ActiveX.


"Criando um arquivo “.Res"
Crie um diretório para que possamos construir o arquivo de recurso (“.res”). Esse arquivo usaremos para poder carregar o flash para a plicação Delphi, sugiro: “C:\ExemploFlashDelphi”.
Copie o arquivo swflash.ocx, que pode ser encontrado no diretório “c:\windows\system\macromed\flash”, ou “C:\WINNT\system32\Macromed\Flash” para o diretório criado anteriormente.
Copie também o arquivo compilado flash “.swf" que você irá exibir em sua aplicação Delphi para o mesmo diretório.
Agora vamos criar primeiro o arquivo “.rc”, abra o bloco de notas e insira essas duas linhas de comando abaixo:
SHOCKWAVEFILE RCDATA arquivo.swf
SHOCKWAVEOCX RCDATA swflash.ocx

O “arquivo.swf” é o nome do seu compilado flash (.swf). Salve esse txt onde acabamos referenciar “SHOCKWAVEFILE” e “SHOCKWAVEOCX” no mesmo diretório que criamos anteriormente e colocamos o “ocx” (“C:\ExemploFlashDelphi”) com o nome “FlashZn.rc” (o que importa aqui é a extenção do arquivo, “.rc”). Feito isso vamos abrir o Prompt do Ms-Dos e digitar a seguinte linha de comando:
  
"Brcc32 -r -32 C:\ExemploFlashDelphi \ FlashZn.rc"

Execute a linha de comando acima um para criar o arquivo “FlashZn.res".

Construindo um exemplo no Delphi
1 - Inicie uma nova aplicação no Delphi: Menu File ► New ► Application.
2 - Adicione no Form1 um ShockwaveFlash (Palheta ActiveX), set a propriedade align = alClient. Pressione F12 para exibir a página de código. Nela, procure a palavra reservada “implementation” abaixo da diretiva de compliação “{$R *.dfm}” adicione “{$R FlashZn.res}”.
3 – Na seção private do Form1 digite conforme o trecho de código abaixo a procedure CarregaFlash, em seguida pressione “Ctrl+Shift+C”:

type
    TForm1 = class(TForm)
    ShockwaveFlash1: TShockwaveFlash;
  private
    procedure CarregaFlash;
    public
end;

Codifique o corpo da procedure conforme exemplo abaixo:
  1. procedure TForm1.CarregaFlash;  
  2. const  
  3.   AZnFlash = 'zn1.swf';  
  4. var  
  5.   ZnAuxDir: String;  
  6.   MySysDir : array[0..MAX_PATH] of Char;  
  7.   FileSWFPath, AppDir: String;  
  8.   AFileRes: TResourceStream;  
  9.   AMyFile: TFileStream;  
  10. begin  
  11.   GetSystemDirectory(@MySysDir,MAX_PATH);  
  12.   FileSWFPath := MySysDir+'\macromed\flash\';  
  13.   GetDir(0,AppDir); // Pega diretório corrente  
  14.  // Verifica se já existe a OCX do flash na máquina  
  15.   if not FileExists(FileSWFPath+'swflash.ocx'then   
  16.   begin  
  17.     ZnAuxDir := IncludeTrailingPathDelimiter(MySysDir)+'macromed');  
  18.     // Cria o diretório da OCX, se necessário, e extrai o recurso.  
  19.     if not DirectoryExists(ZnAuxDir) then  
  20.       if not CreateDir(ZnAuxDir) then  
  21.         raise Exception.Create('Não foi possível criar o diretório!');  
  22.       
  23.     CreateDir(IncludeTrailingPathDelimiter(ZnAuxDir) + 'flash');  
  24.       
  25.     AFileRes := TResourceStream.Create(0'SHOCKWAVEOCX', RT_RCDATA);  
  26.     AMyFile := TFileStream.Create(FileSWFPath + 'swflash.ocx', fmCreate);  
  27.     try  
  28.       AMyFile.CopyFrom(AFileRes, AFileRes.Size);  
  29.     finally  
  30.       AFileRes.Free;  
  31.       AMyFile.Free;  
  32.     end;  
  33.     // Registra a OCX  
  34.     Winexec(PChar('regsvr32 /s ' + FileSWFPath + 'swflash.ocx'), SW_HIDE);  
  35.   end;  
  36.   // Extrai o .swf para o diretório da aplicação    
  37.   AFileRes := TResourceStream.Create(0'SHOCKWAVEFILE',RT_RCDATA);  
  38.   AMyFile := TFileStream.Create(AZnFlash, fmCreate);  
  39.   try  
  40.     AMyFile.CopyFrom(AFileRes, AFileRes.Size);  
  41.   finally  
  42.     AFileRes.Free;    
  43.     AMyFile.Free;  
  44.   end;  
  45.   // Atribui o .swf para o componente  
  46.   ShockwaveFlash1.Movie := IncludeTrailingPathDelimiter(AppDir) + AZnFlash;    
  47. end;  

No Evento OnCreate do Form1 codifique:
  1. procedure TForm1.FormCreate(Sender: TObject);  
  2. begin  
  3.   CarregaFlash;  
  4. end;  

OBS: Todos os arquivos devem estar no mesmo diretório do seu projeto Delphi (projetc1.dpr) para compilar o seu executável. O ".res", o ".ocx" e o arquivo ".swf" também.

Construí este exemplo a partir do código de um amigo, que por sua vez teve como referencia um exemplo do site Ramos da informática

0 comentários:

Postar um comentário

 
Design by Wordpress Theme | Bloggerized by Free Blogger Templates | coupon codes