Este artigo passo a passo descreve como modificar os wrappers de classe dos componentes Web do Microsoft Office 2003. Descreve também como gerar novamente os wrappers de classe, por forma a poder gerir os respectivos eventos numa aplicação criada com o Microsoft Visual Studio .NET.
Por predefinição, os wrappers de classe gerados pelo Microsoft Visual Studio .NET não permitem que o utilizador processe eventos dos seguintes componentes Web do Office 2003:
- Gráfico
- Folha de cálculo
- Tabela dinâmica
Para processar os eventos destes componentes, pode modificar o código fonte dos wrappers de classe e recompilar o código.
Informações adicionais
O Microsoft Visual Studio .NET gera uma classe
event listener que implementa uma interface
event. Esta classe
event listener é passada aos componentes Web do Office (OWC, Office Web Components. Em seguida, o OWC invoca o método
QueryInterface da interface
IDispatch em vez de invocar a interface
event. No entanto, a interface
IDispatch da classe gerada não contém os identificadores de
dispatch (DISPIDs) dos eventos.
Para resolver este problema, pode marcar a classe gerada utilizando o valor
ClassInterfaceType.None para forçar a base de interoperabilidade COM a devolver o
IDispatch da interface em vez do da classe. A interface
IDispatch contém os DISPIDs dos eventos.
Passos para modificar e recompilar os wrappers de classe
- Inicie a linha de comandos do Visual Studio .NET.
- Na linha de comandos, efectue os seguintes passos:
- Crie um novo directório denominado owc11 e passe para esse directório:
md c:\owc11
cd c:\owc11
-
Gere o código fonte no C# para o wrapper Microsoft Windows Forms:
aximp "c:\programas\ficheiros comuns\microsoft shared\web components\11\owc11.dll" /source
-
Elimine o assemblyAxOWC11.dll gerado:
del c:\owc11\axowc11.dll
- Num editor de texto (por exemplo, o Bloco de notas), abra C:\OWC11\AxOWC11.cs.
-
Adicione [ToolboxItem(true)] à classe gerada para os componentes Gráfico, Folha de cálculo e Tabela dinâmica, como indicado nos exemplos seguintes:
Componente de gráfico [System.ComponentModel.ToolboxItem(true)]
public class AxChartSpace : System.Windows.Forms.AxHost {
...
} Componente de folha de cálculo [System.ComponentModel.ToolboxItem(true)]
public class AxSpreadsheet : System.Windows.Forms.AxHost {
...
} Componente de tabela dinâmica [System.ComponentModel.ToolboxItem(true)]
public class AxPivotTable : System.Windows.Forms.AxHost {
...
} -
Marque as classes de eventos como ClassInterfaceType.None, como indicado nos exemplos seguintes:
Componente de gráfico [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxChartSpaceEventMulticaster : OWC11.IChartEvents {
...
} Componente de folha de cálculo [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxSpreadsheetEventMulticaster : OWC11.ISpreadsheetEventSink {
...
} Componente de tabela dinâmica [System.Runtime.InteropServices.ClassInterface(
System.Runtime.InteropServices.ClassInterfaceType.None)]
public class AxPivotTableEventMulticaster : OWC11.IPivotControlEvents {
...
} - Guarde as alterações ao AxOWC11.cs.
-
Na linha de comandos do Visual Studio .NET, efectue os seguintes passos:
- Adicione C:\Programas\Microsoft.NET\Primary Interop Assemblies à variável de ambiente LIB:
set lib=c:\programas\microsoft.net\primary interop assemblies;%path%
-
Copie Microsoft.Office.Interop.OWC11.dll e MSComCtl.dll da GAC em que estão listadas as Primary Interop Assemblies do Microsoft Office 2003:
copy %windir%\assembly\GAC\Microsoft.Office.Interop.Owc11\11.0.0.0__71e9bce111e9429c\Microsoft.Office.Interop.Owc11.dll
copy %windir%\assembly\GAC\mscomctl\10.0.4504.0__31bf3856ad364e35\mscomctl.dll
-
Compile o ficheiro fonte, AxOWC11.cs:
csc /t:library /r:microsoft.office.interop.owc11.dll /r:adodb.dll /r:msdatasrc.dll /r:mscomctl.dll axowc11.cs
Nota: receberá a seguinte mensagem de erro CS0108:The keyword new is required
Pode ignorar este erro.
- Inicie o Visual Studio .NET.
-
Adicione o AxOWC11.dll recém-compilado à Toolbox:
-
No menu Tools, clique em Customize Toolbox (no Visual Studio .NET 2002) ou Add/Remove Toolbox Items (no Visual Studio .NET 2003) e clique no separador .NET Framework Components.
-
No separador .NET Framework Components, clique em Browse.
-
Na caixa de texto File name, escreva c:\owc11\axowc11.dll. Clique em Open.
-
Clique em OK para fechar a caixa de diálogo Customize Toolbox.
Quando criar um novo projecto do Microsoft Visual Basic .NET ou do Microsoft Visual C# .NET, repare que a lista de controlos no separador
General de
Toolbox contém o controlo
AxChartSpace, o controlo
AxPivotTable e o controlo
AxSpreadsheet. Poderá, agora, adicionar estes componentes aos seus formulários.
Para obter informações adicionais sobre como gerir eventos dos componentes Web do Office XP utilizando o Visual Studio .NET, clique nos números de artigo que se seguem para visualizar os artigos na base de dados de conhecimento da Microsoft (KB,
Microsoft Knowledge Base):
328275
(http://support.microsoft.com/kb/328275/
)
HOW TO: Handle Events for the Office Web Components in Visual Studio .NET