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
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 antigoCREATE "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.
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 antigoDEFINE VAR chExcel AS COM-HANDLE NO-UNDO. DEFINE VAR chWorkbook AS COM-HANDLE NO-UNDO. DEFINE VAR chRange AS COM-HANDLE NO-UNDO.
Modelo novoDEFINE 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.
Alterar métodos que não passam parâmetros adicionando “?” ou utilizando um método correspondente sem os mesmos, quando existir.
Modelo antigochWorkbook:SaveAs(tt-param.arquivo,"56",,,,,,,,,,).
Modelo novochWorkbook:SaveAs(tt-param.arquivo,"56",?,?,?,?,?,?,?,?,?,?). ou chWorkbook:SaveAs(tt-param.arquivo,"56").
Alterar atribuição à métodos por propriedades com extent.
Modelo antigochChart:HasAxis({&xlCategory}) = false.
Modelo novochChart:HasAxis({&xlCategory}, false).
Alterar métodos que recebem como parâmetro a propriedade de outro objeto.
Modelo antigochWorksheet = chWorkbook:Sheets(chWorkbook:Sheets:COUNT).
Modelo novoiWorkSheets = chWorkbook:Sheets:COUNT. chWorksheet = chWorkbook:Sheets(iWorkSheets).
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 antigochWorksheet:Range('A1'):Value = da-conversao. /* Variável com o tipo data */
Modelo novochWorksheet: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).
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 antigoIF VALID-HANDLE(chExcel) THEN RELEASE OBJECT chExcel NO-ERROR.
Modelo novoIF chExcel <> ? THEN DELETE OBJECT chExcel NO-ERROR.
Word
Na criação do objeto OLE deve ser alterado para atribuir uma instância da classe wrapper Word, similar ao processo do Excel.
Modelo antigoCREATE "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.
- 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 novoDEFINE VARIABLE chWord AS office.iface.word.WordWrapper NO-UNDO. DEFINE VARIABLE chDocument AS office.iface.word.Document NO-UNDO.
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.
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 antigoIF VALID-HANDLE(chWord) THEN RELEASE OBJECT chWord NO-ERROR.
Modelo novoIF chWord <> ? THEN DELETE OBJECT chWord NO-ERROR.