Árvore de páginas



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. A include inicializa a variável passada como parâmetro com base na configuração dos Parâmetros Globais (CD0101).

    Modelo antigo
    CREATE "Excel.Application" chExcel.
    Modelo novo
    {office/office.i Excel chExcel}

    OBS

    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)

    Exemplo
    {office/office.i Excel chExcel}
    
    PROCEDURE 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.

    Modelo antigo
    DEFINE VAR chExcel    AS COM-HANDLE NO-UNDO.
    DEFINE VAR chWorkbook AS COM-HANDLE NO-UNDO.
    DEFINE VAR chRange    AS COM-HANDLE NO-UNDO.
    Modelo novo
    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.

    Modelo antigo
    chWorkbook:SaveAs(tt-param.arquivo,"56",,,,,,,,,,).
    Modelo novo
    chWorkbook:SaveAs(tt-param.arquivo,"56",?,?,?,?,?,?,?,?,?,?). ou chWorkbook:SaveAs(tt-param.arquivo,"56").
  4. Alterar atribuição à métodos por propriedades com extent.

    Modelo antigo
    chChart:HasAxis({&xlCategory}) = false.
    Modelo novo
    chChart:HasAxis({&xlCategory}, false).
  5. Alterar métodos que recebem como parâmetro a propriedade de outro objeto.

    Modelo antigo
    chWorksheet = chWorkbook:Sheets(chWorkbook:Sheets:COUNT).
    Modelo novo
    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.

    Modelo antigo
    chWorksheet:Range('A1'):Value = da-conversao. /* Variável com o tipo data */
    Modelo novo
    chWorksheet:Range('A1'):DateValue = da-conversao. ou chWorksheet:Range('A1'):SetValue(da-conversao).

    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 (?).

    Modelo antigo
    IF VALID-HANDLE(chExcel) THEN
       RELEASE OBJECT chExcel NO-ERROR.
    Modelo novo
    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.

    Modelo antigo
    CREATE "Word.Application" chWord.
    Modelo novo
    {office/office.i Word chWord}

    OBS

    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)

    Exemplo
    {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.


    Modelo antigo
    DEFINE VARIABLE chWord      AS COM-HANDLE NO-UNDO.
    DEFINE VARIABLE chDocument  AS COM-HANDLE NO-UNDO.
    Modelo novo
    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 (?).


    Modelo antigo
    IF VALID-HANDLE(chWord) THEN
       RELEASE OBJECT chWord NO-ERROR.
    Modelo novo
    IF chWord <> ? THEN
       DELETE OBJECT chWord NO-ERROR.





  • Sem rótulos