Árvore de páginas

Versões comparadas

Chave

  • Esta linha foi adicionada.
  • Esta linha foi removida.
  • A formatação mudou.

...

Em função da nova estrutura adotada (classes Wrapper) existem algumas pequenas mudanças na criação de uma integração com a plataforma Office que devem ser observadas e ajustadas caso necessário:

Excel

  1. Na criação do objeto OLE deve ser alterado para atribuir uma instância da classe wrapper ( Excel ou Word). A include inicializa a variável passada como parâmetro com base na configuração dos Parâmetros Globais (CD0101).

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    CREATE "Excel.Application" chExcel.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    {office/office.i Excel chExcel}
    Informações
    titleOBS

    Caso a include esteja em uma procedure interna, deve ser desfeita a definição da variável global OFFICE_WRAPPERS para correta definição das variáveis de verificação (microsoft/libre)

    Bloco de código
    languageruby
    titleExemplo
    linenumberstrue
    {office/office.i Excel chExcel}
    
    PROCEURE sample:
        &IF DEFINED(OFFICE_WRAPPERS) &THEN
            &UNDEFINE OFFICE_WRAPPERS
        &ENDIF
        {office/office.i Excel chExcel}
    END PROCEDURE.
  2. Na definição das variáveis que serão utilizadas na integração devem ser alteradas do tipo COMPONENT-HANDLE para o tipo CLASS apontando para a interface responsável pela implantação da funcionalidade nas classes Wrapper.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    DEFINE VAR chExcel    AS COM-HANDLE NO-UNDO.
    DEFINE VAR chWorkbook AS COM-HANDLE NO-UNDO.
    DEFINE VAR chRange    AS COM-HANDLE NO-UNDO.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    DEFINE VAR chExcel    AS office.iface.excel.ExcelWrapper NO-UNDO.
    DEFINE VAR chWorkbook AS office.iface.excel.Workbook     NO-UNDO.
    DEFINE VAR chRange    AS office.iface.excel.Range        NO-UNDO.
  3. Alterar métodos que não passam parâmetros adicionando “?” ou utilizando um método correspondente sem os mesmos, quando existir.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorkbook:SaveAs(tt-param.arquivo,"56",,,,,,,,,,).
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chWorkbook:SaveAs(tt-param.arquivo,"56",?,?,?,?,?,?,?,?,?,?). ou chWorkbook:SaveAs(tt-param.arquivo,"56").
  4. Alterar atribuição à métodos por propriedades com extent.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chChart:HasAxis({&xlCategory}) = false.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chChart:HasAxis({&xlCategory}, false).
  5. Alterar métodos que recebem como parâmetro a propriedade de outro objeto.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorksheet = chWorkbook:Sheets(chWorkbook:Sheets:COUNT).
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    iWorkSheets = chWorkbook:Sheets:COUNT.
    chWorksheet = chWorkbook:Sheets(iWorkSheets).
  6. Alterar a atribuição da propriedade VALUE, que é CHARACTER, pela correspondente de acordo com o tipo (DATE, INTEGER, DECIMAL ou LOGICAL) em questão.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    chWorksheet:Range('A1'):Value = da-conversao. /* Variável com o tipo data */
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    chWorksheet:Range('A1'):DateValue = da-conversao. ou chWorksheet:Range('A1'):SetValue(da-conversao).
    Informações

    O método SetValue() recebe qualquer tipo de valor, independente da tipagem, porem não por ser utilizado dentro de um bloco de ASSIGN. Exemplo:

    chWorksheet:Range('A1'):SetValue('Valor da célula'). ou chWorksheet:Range('A1'):SetValue(10000).

             

  7. Alterar os RELEASEs de objetos OLE por DELETEs de objetos ABL, e caso seja a variável principal da API, o Excel, adicionar a chamada ao método "Release", para que o OLE automation na DLL seja liberado. Caso seja feita a verificação com VALID-HANDLE alterar para uma comparação com o valor desconhecido (?).

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    IF VALID-HANDLE(chExcel) THEN
       RELEASE OBJECT chExcel NO-ERROR.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    IF chExcel <> ? THEN
       DELETE OBJECT chExcel NO-ERROR.



Word

 

  1. Na criação do objeto OLE deve ser alterado para atribuir uma instância da classe wrapper Word, similar ao processo do Excel.

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    CREATE "Word.Application" chWord.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    {office/office.i Word chWord}
    Informações
    titleOBS

    Caso a include esteja em uma procedure interna, deve ser desfeita a definição da variável global OFFICE_WRAPPERS para correta definição das variáveis de verificação (microsoft/libre)

    Bloco de código
    languageruby
    titleExemplo
    linenumberstrue
    {office/office.i Word chWord}
    
    PROCEURE sample:
        &IF DEFINED(OFFICE_WRAPPERS) &THEN
            &UNDEFINE OFFICE_WRAPPERS
        &ENDIF
        {office/office.i Word chWord}
    END PROCEDURE.
  2. Na definição das variáveis que serão utilizadas na integração devem ser alteradas do tipo COMPONENT-HANDLE para o tipo CLASS apontando para a interface responsável pela implantação da funcionalidade nas classes Wrapper.

     

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    DEFINE VARIABLE chWord      AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chDocument  AS COM-HANDLE NO-UNDO.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    DEFINE VARIABLE chWord     AS office.iface.word.WordWrapper NO-UNDO.
    DEFINE VARIABLE chDocument AS office.iface.word.Document    NO-UNDO.
  3. Alterar métodos que recebem como parâmetro a propriedade de outro objeto. Seguir a mesma recomendação especificada no item 5 para o Excel.

  4. Alterar os RELEASEs de objetos OLE por DELETEs de objetos ABL, e caso seja a variável principal da API, o Excel, adicionar a chamada ao método "Release", para que o OLE automation na DLL seja liberado. Caso seja feita a verificação com VALID-HANDLE alterar para uma comparação com o valor desconhecido (?).

     

    Bloco de código
    languageruby
    titleModelo antigo
    linenumberstrue
    IF VALID-HANDLE(chWord) THEN
       RELEASE OBJECT chWord NO-ERROR.
    Bloco de código
    languageruby
    titleModelo novo
    linenumberstrue
    IF chWord <> ? THEN
       DELETE OBJECT chWord NO-ERROR.