HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Office Spreedsheet ActiveX jellemzői


Példaprogram letöltése

9620 bájt

A Microsoft Office alkalmazásokat nemcsak COM komponenseik révén érhetjük el, hanem akár az általunk feltelepített ActiveX komponenseket is felhasználhatjuk az alkalmazásaink űrlapjain. Ilyen például az Excel alkalmazás által telepített Spreadsheet komponens, melynek révén közvetlenül szerkeszthetünk egy Excel munkalapot. Cikkünkben bemutatjuk, hogyan használhatjuk fel a komponenst, és hogy milyen kezelők rendelhetők az egyes műveletek közben generált eseményekhez.

A mellékelt példában bemutatandó Excel ActiveX komponens használatához fel kell csak dobnunk azt a ToolBox elemei közül a Form-ra, és beállítanunk a szükséges tulajdonságokat. A komponens az Office csomag Web Components együttesének részeként települ fel a rendszerünkbe és – verziótól függően – az MSOWC.DLL vagy az MSOWC10.DLL állományokban található. Az Office XP telepítésekor mindkét DLL rendelkezésünkre áll.
Ahhoz, hogy a komponens elérhető legyen a ToolBox-ban, fel kell azt vennünk oda. Ehhez kattintsunk a ToolBox paneljén az egér jobb gombjával, majd a megjelenő menüből válasszuk a Customize ToolBox menüpontot. A felbukkanó ablak COM Components füle alatt keressük meg a Microsoft Office Spreadsheet 9.0 elemet, majd jelöljük be a mellette található CheckBox-ot. Ezt követően már a ToolBox tartalmazza a kontrolt.
A Microsoft Office Spreadsheet 10.0 komponens valamilyen okból nem működik megfelelően együtt a .NET 1.0 futtatórendszerrel, ezért választottuk a 9.0 verziót.
A kontrolt feldobva a Form-ra megjelenik egy Excel munkalap kevesebb funkciót tartalmazó mása. A cellákat szerkeszthetjük, formázhatjuk, az eredményt állományba exportálhatjuk. A műveletek többségéhez egy-egy esemény kapcsolható, melyek elkaphatók, információik lekérdezhetők. Lássuk, milyen eseményekről beszélhetünk.
Az első a Command nevet viseli, és minden olyan esetben létrejön, amikor az eszközpalettáján található funkciók közül valamelyiket kiválasztjuk és végrehajtjuk. Ehhez deklarálhatunk egy kezelőt, melynek típusa AxOWC.IWebCalcEventSink_CommandEventHandler.
this.axSpreadsheet1.Command += new AxOWC.IWebCalcEventSink_CommandEventHandler(this.Command);
A kezelőmetódus pataméterei közül a második speciális, típusa AxOWC.IWebCalcEventSink_CommandEvent.
private void Command(object sender, AxOWC.IWebCalcEventSink_CommandEvent e)
{
  statusBar1.Text = "Parancs futása elkezdődött...";
}
Amikor valamely cella szerkesztését befejeztük és a fókusz már nincs a cellán, akkor az ENDEDIT esemény fut le.
this.axSpreadsheet1.EndEdit += new AxOWC.IWebCalcEventSink_EndEditEventHandler(this.EndEdit);
A kezelőmetódus paramétere AxOWC.IWebCalcEventSink_EndEditEvent típusú. A paraméter rendelkezik egy tagobjektummal, melynek neve EVENTINFO, és amelyen keresztül információk szerezhetők a cellával kapcsolatban.
A tagobjektum Range elemének Address property-jéből egy karakterlánc formájában lekérdezhető, hogy melyik celláról van szó. Az eredmény lehet például „A1”, stb.
Az EDITDATA property lehetőséget ad arra, hogy a cellába beírt adatot lekérdezzük. Az eredmény itt is egy karakterlánc lesz. Az EndEdit esemény kezelője tehát a következőképpen fest:
private void EndEdit(object sender, AxOWC.IWebCalcEventSink_EndEditEvent e)
{
  statusBar1.Text = e.eventInfo.Range.Address + " cella adata: " + e.eventInfo.EditData;
}
Ha valamely cella tartalmát szerkesztjük, de a szerkesztés műveletét megszakítjuk azzal, hogy megnyomjuk az ESC gombot, vagy megváltoztatjuk az aktív cellát egy egérkattintással (lényeg hogy az ENTER billentyű nem kerül lenyomásra), akkor a CALCELEDIT esemény következik be.
this.axSpreadsheet1.CancelEdit += new AxOWC.IWebCalcEventSink_CancelEditEventHandler(this.CancelEdit);
Az eseménykezelő pedig AxOWC.IWebCalcEventSink_CancelEditEventHandler típusú:
private void CancelEdit(object sender, AxOWC.IWebCalcEventSink_CancelEditEvent e)
{
  statusBar1.Text = e.eventInfo.Range.Address + " cella törölve!";
}
A cellák valamelyikén kattintva egy újabb esemény generálódik, melynek neve CLICKEVENT.
this.axSpreadsheet1.ClickEvent += new AxOWC.IWebCalcEventSink_ClickEventHandler(this.ClickEvent);
A kezelőfüggvényt IWebCalcEventSink_ClickEventHandler típusúra kell választanunk.
private void ClickEvent(object sender, AxOWC.IWebCalcEventSink_ClickEvent e)
{
  statusBar1.Text = "Aktív cella: " + e.eventInfo.Range.Address;
}

Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 754. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |