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.



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"
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.swfSHOCKWAVEOCX 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:
- procedure TForm1.CarregaFlash;
- const
- AZnFlash = 'zn1.swf';
- var
- ZnAuxDir: String;
- MySysDir : array[0..MAX_PATH] of Char;
- FileSWFPath, AppDir: String;
- AFileRes: TResourceStream;
- AMyFile: TFileStream;
- begin
- GetSystemDirectory(@MySysDir,MAX_PATH);
- FileSWFPath := MySysDir+'\macromed\flash\';
- GetDir(0,AppDir); // Pega diretório corrente
- // Verifica se já existe a OCX do flash na máquina
- if not FileExists(FileSWFPath+'swflash.ocx') then
- begin
- ZnAuxDir := IncludeTrailingPathDelimiter(MySysDir)+'macromed');
- // Cria o diretório da OCX, se necessário, e extrai o recurso.
- if not DirectoryExists(ZnAuxDir) then
- if not CreateDir(ZnAuxDir) then
- raise Exception.Create('Não foi possível criar o diretório!');
- CreateDir(IncludeTrailingPathDelimiter(ZnAuxDir) + 'flash');
- AFileRes := TResourceStream.Create(0, 'SHOCKWAVEOCX', RT_RCDATA);
- AMyFile := TFileStream.Create(FileSWFPath + 'swflash.ocx', fmCreate);
- try
- AMyFile.CopyFrom(AFileRes, AFileRes.Size);
- finally
- AFileRes.Free;
- AMyFile.Free;
- end;
- // Registra a OCX
- Winexec(PChar('regsvr32 /s ' + FileSWFPath + 'swflash.ocx'), SW_HIDE);
- end;
- // Extrai o .swf para o diretório da aplicação
- AFileRes := TResourceStream.Create(0, 'SHOCKWAVEFILE',RT_RCDATA);
- AMyFile := TFileStream.Create(AZnFlash, fmCreate);
- try
- AMyFile.CopyFrom(AFileRes, AFileRes.Size);
- finally
- AFileRes.Free;
- AMyFile.Free;
- end;
- // Atribui o .swf para o componente
- ShockwaveFlash1.Movie := IncludeTrailingPathDelimiter(AppDir) + AZnFlash;
- end;
No Evento OnCreate do Form1 codifique:
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- CarregaFlash;
- 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