Buscar

Delphi e OpenOffice(BROffice) - Parte 1

nome

Exio

Colunista ainda sem descrição. Caro colunista, por favor envie-nos sua descrição.

Delphi e OpenOffice(BROffice) - Parte 1

I - INTRODUÇÃO

Vamos inicar um novo passeio; um passeio diferente, um passeio pelo mundo do software de código aberto. Abro esse artigo, não querendo dar a idéia de que será algo original. Mas de apresentar a idéia da comunicação OLE entre aplicações Delphi e a família de documentos BrOffice (ou OpenOffice - Writer, Calc, Base e Impress). Porque estou querendo dar ênfase a essa idéia? Simples! o Sistema da empresa onde trabalho, comunica-se tranquilamente com a família Microsoft Office, porém um de nossos clientes resolveu adotar a família BrOffice para sua empresa, e o mais cômico disso tudo, foi porque eu que os incentivei. Mas não tinha idéia de que a parte da comunicação seria tão complexa, mais complexa do que pegar e rodar uma macro no Office e rapidamente obter as propriedades que poderiam ser acessadas e as incorporar em nosso aplicativo.

A minha idéia não é nem um pouco original, mas como falei, ela é interessante porque nos remete a um novo aprendizado, e muitas vezes deixamos de implementar algo, já que a quantidade de informação é rara ou, o trabalho cobrará suas dívidas em relação ao tempo perdido, tornando-o muito oneroso, tanto para sua empresa como para os clientes. Mas o mais importante de tudo é tomar a iniciativa e seguir em frente.

II – REFERÊNCIAS

Leio muitos artigos escritos em revistas de programação e sites relacionados ao Delphi e raramente vejo uma referência dando crédito aos que nos ensinaram e que nos possibilitaram dar os ponta-pés iniciais no assunto; nesse caso, gostaria de ressaltar o documento escrito por Sérgio Hernandes que está hospedado no site www.broffice.org e pode ser obtido no seguinte endereço: http://ooomacros.org/dev.php#133853. Uma segunda referênca que poderá lhe dar uma luz é o livro chamado: OpenOffice.org Macros Explained do escritor Andrew Pitonyak de 2004 (velho, mas todo que é velho é importante para nossas vidas).

III - OBSERVAÇÕES IMPORTANTES

Não será apresentado detalhes pertinentes ao uso dos aplicativos, isto é, como salvar, abrir e editar arquivos ou executar comandos de compilação. Esses são pressupostos necessários para os que estão interessados nesse assunto.

IV – PROBLEMAS

No caso de encontrar erros nos procedimentos, favor relatar. Não sou dono da verdade, portanto as críticas construtivas serão bem-vindas. Não darei atenção para qualquer crítica ríspida, pois trato todos com respeito.

V – APLICATIVOS

Delphi 7 ou qualquer versão superior e também a Suite BrOffice - estou usando a versão 3.1 com o Builder 9420 - Instalação Padrão.

VI - DIREITOS DE CÓPIA

Assunto autorizado somente para o site www.PlanetaDelphi.com.br. Esse conteúdo não pode ser copiado ou re-linkado sem prévia autorização do seu autor ou do responsável pelo site, nesse caso Sr. Felipe Monteiro. Toda a cópia e re-linkagem sem autorização prévia e por escrito dos responsáveis mencionados anteriormente, estarão sujeitas aos termos da lei de pirataria.

Delphi e BrOffice

Iniciando as aplicações do pacote

IMPORTANTE: sempre declarar na seção USES a Unit ComObj para todos os exemplos apresentados.

Para que possamos executar as diversas aplicações do pacote BrOffice, faremos uso basicamente de um procedimento chamado LoadComponentFromURL que recebe 4 parâmetro e segue este formato: LoadComponentFromURL(sURL, sFrame, FlagDeBusca, Array); As tabelas abaixo, apresentam os valores permitidos para cada um dos parâmetros.

Tabela 1 - URL – String – Primeiro Parâmetro


Tabela 2 - Frames – Segundo Parâmetro


Flag de Busca - Terceiro Parâmetro

É um valor constate que define o algoritmo que será usado para encontra o quadro de destino. Use o valor 0 nesse parâmetro para cancelar.

Array – Quarto Parâmetro

Nesse parâmetro são passados parâmetros para o descritor de mídia do arquivo, definindo diversar propriedades para o carregamento.

Executando os diversos Frames - Criando o nosso primeiro aplicativo

Não esqueça que o BROffice deve estar instalado.

Nesse aplicativo, vamos simplesmente fazer com que o nosso programa execute um dos programas BROffice que o usuário desejar executar. Execute o Delphi, crie uma nova aplicação e no form adicione um componente radiogroup contendo os nomes das aplicações (factory´s) na propriedade itens, uma variável pública chamada aplicação e um botão. Conforme a figura abaixo.


Vamos escrever algum código agora. No evento onClick do radiogroup edite o seguinte código:

Case RadioGroup1.ItemIndex of
  0 : Aplicacao := '';
  1 : Aplicacao := 'private:factory/scalc';
  2 : Aplicacao := 'private:factory/swriter';
  3 : Aplicacao := 'private:factory/swriter/web';
  4 : Aplicacao := 'private:factory/swriter/GlobalDocument';
  5 : Aplicacao := 'private:factory/sdraw';
  6 : Aplicacao := 'private:factory/smath';
  7 : Aplicacao := 'private:factory/simpress';
  8 : Aplicacao := 'private:factory/schart';
  9 : Aplicacao := '.component:Bibliography/View1';
end;

Para o evento onClick do botão, edite o seguinte código:

procedure TForm1.Button1Click(Sender: TObject);
var
  BrOffice, Desktop, Executar : Variant;
begin
  if RadioGroup1.ItemIndex <> 0 then
  begin
    BrOffice := CreateOleObject('com.sun.star.ServiceManager');        //1ª Linha
    Desktop  := BrOffice.CreateInstance('com.sun.star.frame.Desktop'); //2ª Linha
    Executar := Desktop.LoadComponentFromURL(Aplicacao, '_blank', 0,   //3ª Linha
                VarArrayCreate([0,-1], varVariant));
  end;

  BrOffice  := Unassigned;
  Desktop  := Unassigned;
  Executar := Unassigned;
  {Atente para as letras maísculas e minúsculas. Se a palavra frame por exemplo
   for colocada em maiúscula, uma exceção lhe será apresentada.}
end;

Vou fazer agora um pequeno detalhemento do que foi feito no evento onclick do botão. Veja que foram declaradas três variáveis do tipo Variant – São elas: BrOffice, Desktop e Executar. A variant BROffice é a inicialização, muito parecido com a chamada do Office, ao invés de chamar por exemplo 'Excel.Application' estará chamando um elemento chamado Service Manager do módulo 'com.sun.star'. Já a variável Desktop criar uma instância contendo os elementos comuns da plataforma; a variável Executar será encarregada de ser uma referência a aplicação, isto quer dizer que, quando clicar no botão para executar o programa desejado, por exemplo o Calc, Executar terá todo o conjunto de módulos pertinentes ao Calc, a partir dele, poderemos acessar as propriedades de Pastas, Planilhas e Células.

Por fim, vemos declaradas as três variáveis mencionadas anteriormente, porém recebendo a atribuição de Unassigned. Estamos somente limpando as variáveis, mais nada.

Download desta aula

Delphi e BrOffice - Parte 1.rar

Até a próxima aula !!!

Publicidade

Vote no artigo




Quantidade de votos: 2 votos
Aceitação: 20%


Detalhes do artigo

Categoria: Windows
Adicionado dia: 06/01/10
Por: Exio
Visualizado: 31688 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009