HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Office Segéd használata


Példaprogram letöltése

12211 bájt

Az Office alkalmazáscsomagban találunk egy szolgáltatást Office Assistant (Office Segéd) néven, melynek segítségével a felhasználó könnyebben igazodik ki az adott alkalmazás lehetőségei között. A fejlesztők lehetővé tették, hogy alkalmazásainkból mi is elérjük ezt a szolgáltatást. Cikkünkben elkészítünk egy Word beépülő modult, mely eléri a Segéd egyes funkcióit a felhasználóval történő kapcsolatteremtéshez.

A mellékelt példa használata előtt fordítsa le a forráskódot, majd az AssistantAddinSetup projekt AssistantAddinSetup.msi állományának elindításával telepítse a modult. Ezt követően indítsa el a Word alkalmazást.
Az elkészítendő modul egy beépülő menü, egy menüponttal. A modul elkészítését röviden részletezzük, hiszen itt az Office Segéd elérésén van a hangsúly.
Menü elkészítése
A létrehozott projektben egy Connect.cs állományban helyezhetjük el a menü létrehozásának kódját. A projekt mellett automatikusan generálódik egy telepítő projekt is, mely segíti a modul elhelyezését a COM komponensek közt, és elvégzi a szükséges regisztrációs bejegyzéseket.
A beépülő menü létrehozásához el kell helyeznünk egy referenciát a Microsoft.Office.Core névtérre, mert ebben találhatók a menüobjektumok deklarációi, valamint egy hivatkozást a Word alkalmazás komponensére, hogy el tudjuk érni a célalkalmazást.
A menüsor újabb pontjai CommandBarPopup típusú elemek, míg a menü alpontjainak típusa CommandBarButton.
A Connect osztályban deklarálunk mindkét típusból egyet, hiszen egy alpontot fogunk a menüben megjeleníteni. Szükségünk van továbbá egy példányra a Word alkalmazásból is.
public Microsoft.Office.Core.CommandBarPopup menuMain;
public Microsoft.Office.Core.CommandBarButton menuItem;
private Word.Application wa;
A menü felirata „Beépülő menü”, míg az alpont felirata „Dátum beillesztése” lesznek. A megvalósításhoz a következő lépéseket kell tennünk az OnStartupComplete függvénynél, mely akkor kerül meghívásra, amikor a Word már elindult és a modulunk betöltése után már létrejött a kapcsolat a két alkalmazás között.
public void OnStartupComplete(ref System.Array custom)
{
  CreateMenu();
}
A menü létrehozásának konkrét lépései helyett ismertetjük, hogyan rendelhetünk kezelőfüggvényt a gomb megnyomásához. Ekkor a menüpontok létrehozása után – amikor már az objektumok léteznek -, rendelünk egy delegáltat a gomb Click eseményéhez.
...
menuItem.Click += new Microsoft.Office.Core._CommandBarButtonEvents_ClickEventHandler(Button_Click);
Office Segéd elérése
A fenti kezelőmetódusban (Button_Click) elérjük a Segéd objektumot. Ennek megvalósításához felhasználjuk a globális Word.Application objektumot, melynek Assistant property-je tartalmazza a Segédet.
A Segéd alapvető funkciója, hogy környezet-érzékeny módon nyújtson segítséget a felhasználónak, vagyis az adott munkafolyamathoz kapcsolódó ötleteket, vagy lehetőségeket tárja a felhasználó elé. A felhasználónak szánt üzeneteket egy üzenetablakban jeleníti meg (ballon).
A Segéd üzenetmegjelenítő funkcióját mi is elérhetjük saját modulunkból, hogy a beépülő modul adott funkciójával kapcsolatosan kérdést intézzünk a felhasználóhoz, majd a reakciót kiértékelve végezzük el a feladatot.
A modul egyetlen almenüjére kattintva beilleszthetjük az aktuális dátumot a kurzor aktuális pozíciójába. A megjelenő üzenetablakban egy CheckBox kontrol jelenik meg, melynek bejelölésével a beszúrandó dátum tartalmazza a dátum időösszetevőjét is, egyébként nem. Amennyiben a Mégse gombra kattint a felhasználó, akkor pedig a dátum egyetlen összetevője sem kerül beszúrásra.
A megjelenő üzenetablak a Microsoft.Office.Core névtér Balloon típusú objektuma, melyet az Assistant objektum NewBalloon property-jének lekérdezésével kaphatunk meg.
Microsoft.Office.Core.Balloon b = wa.Assistant.NewBalloon;
Ezt követően meg kell adnunk a panel egyes jellemzőit. A panel típusa az első beállítandó jellemző. Mivel a panel gombokat is kell hogy tartalmazzon, így a típusa a következőképpen adható meg:
b.BalloonType = Microsoft.Office.Core.MsoBalloonType.msoBalloonTypeButtons;
Azt szeretnénk, ha a panel két gombot tartalmazna: egy OK, és egy MÉGSE gombot. Ennek érdekében a MsoButtonSetType felsorolt típus értéke msoButtonSetOkCancel.
b.Button = Microsoft.Office.Core.MsoButtonSetType.msoButtonSetOkCancel;
A következő lépésben megadjuk a fejlécben megjelenő szöveget.
b.Heading = "Dátum beillesztése";
Az üzenetablak ikonját egy villanykörtére választjuk.
b.Icon = Microsoft.Office.Core.MsoIconType.msoIconTip;
És gondoskodunk róla, hogy a panel modális ablakként jelenjen meg, azaz megkerülhetetlenül választás elé állítja a felhasználót.
b.Mode = Microsoft.Office.Core.MsoModeType.msoModeModal;
Annak érdekében, hogy a panelen egy CheckBox kontrol is legyen, létre kell hoznunk azt. A panelen megtalálható ilyen kontrolokat a Checkboxes kollekció tartalmazza.
Microsoft.Office.Core.BalloonCheckbox bcb = (Microsoft.Office.Core.BalloonCheckbox)((Microsoft.Office.Core.BalloonCheckboxes)b.Checkboxes)[1];
A CheckBox kontrol szövegét egy Text nevű property-ben specifikálhatjuk. Beállíthatjuk továbbá, hogy a jelölőnégyzet jelölt állapotban legyen-e, vagy sem, de ezzel a lehetőséggel most nem élünk.
bcb.Text = "A négyzetet kijelölve a dátumban megjelenik a pontos idő is, egyébként nem.";
Az ablak bezárása után meg kell vizsgálnunk, hogy a felhasználó mely gombra kattintva zárta be az ablakot. A Balloon objektumot a Show metódusával jelenítjük meg, és ennek visszatérési értéke tartalmazza a gomb típusát, mely lenyomásra került. Ez egy MsoBalloonButtonType felsorot típusú elem, mely jelen esetben msoBalloonButtonOK, vagy msoBalloonButtonCancel értékű lehet.
Microsoft.Office.Core.MsoBalloonButtonType bt = b.Show();
Amennyiben a felhasználó az OK gombra kattintott - vagyis jelzi, hogy valamely művelet elvégzésére szüksége van - megvizsgáljuk, hogy be volt-e jelölve a jelölőnégyzet vagy sem. A fent létrehozott BalloonCheckbox típusú objektum ekkor már a panel bezárása utáni állapotot tükrözi, így elegendő azt lekérdezni.
if (bt == Microsoft.Office.Core.MsoBalloonButtonType.msoBalloonButtonOK)
{
  bcb = (Microsoft.Office.Core.BalloonCheckbox)((Microsoft.Office.Core.BalloonCheckboxes)b.Checkboxes)[1];
Amennyiben a négyzet jelölt volt, akkor a teljes dátumot megjelenítjük, egyébként csak a dátum év, hónap és nap összetevőit.
  if (bcb.Checked)
  {
    date = DateTime.Now.ToString();          
  }
  else
  {
    ...
  }
A dátumot a date változóban tároljuk, majd beillesztjük annak tartalmát a szövegbe.
wa.Selection.TypeText(date);
wa.Selection.TypeParagraph();
A COM modulunk telepítése után ellenőrizzük, hogy a telepítő beállította-e a Windows regisztrációs adatbázisába az alábbi kulcsot és értéket:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\Word\Addins\AssistantAddin.Connect
LoadBehavior 3
A telepítő futása után jelentkezzünk ki a rendszerből és újra be, majd ha ezt követően indítjuk a Word-öt, akkor a menüsorban már ott kell lennie az új menüpontnak is.

Cikksorozat

#IDKategóriaCikk címeSorozat
3643DelphiFormEditor1. rész
3689DelphiProject és modul információk2. rész
3719DelphiMegnyitás, mentés3. rész
3749DelphiKódszerkesztő4. rész
3778DelphiForráskód írása, olvasása5. rész
3809DelphiInterfész a kódszerkesztő ablakhoz6. rész
3839DelphiKijelölt blokkok7. rész
3869DelphiA buffer beállításai8. rész
3899DelphiKörnyezeti és Project opciók9. rész
3929DelphiKurzor a kódszerkesztőben10. rész
3959DelphiKeresés és csere beállításai11. rész


Könyv
Ez a cikk megtalálható ebben a könyvben: C# Software Offline 2003 évkönyv 379. 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 |