
A példa fordítása után futtassa le a mellékelt AddRegistry.reg állományt a Rendszerleíró adatbázis bejegyzéseinek elkészítéséhez.
A címke kipróbálásához indítson el egy példányt az Excel alkalmazásból, és egy tetszőleges cellában gépeljen be adatot.
Ahogy a sorozat korábbi részeiben megismerhettük, az Intelligens címkében két osztályt kell megvalósítani. A RecognizerClass osztály Recognize metódusa végzi a felismerést és megjelölést, míg az ActionClass InvokeVerb metódusában valósítjuk meg a megjelenő menüpont mögötti funkciót.
Az osztályok mindegyikéhez létrehoztunk egy-egy GUID számot, melyeket felhasználunk a regisztrációban. Az AddRegistry.reg állomány lefuttatásával helyezzük el a regisztrációs bejegyzéseket a Rendszerleíró adatbázisban, a RemRegistry.reg állomány futtatásával pedig eltávolíthatjuk a létrehozott kulcsokat.
Az Intelligens címkénk mindegyikét COM komponensként kell regisztrálnunk, így a projekt tulajdonságlapján a megfelelő paramétert igazra kell állítani.
Annak érdekében, hogy a címke csak Excel alkalmazásban legyen használható, a Word alkalmazás dokumentumaiban viszont hagyja figyelmen kívül a szöveget, a RecognizeClass osztályunk Recognize metódusának DataType nevű paraméterét kell csak lekérdeznünk. A paraméter SmartTagLib névtér IF_TYPE felsorolt típusának egy eleme, melynek értéke IF_TYPE_PARA Word alkalmazás esetén, és IF_TYPE_CELL Excel alkalmazás megnyitásakor.
Ekkor elegendő csak lekérdezni a paraméter aktuális értékét, és máris meghatározhatjuk, hogy mely alkalmazás-típus esetén legyen a címke használható. Ha ezt nem tennénk meg, akkor Word dokumentum esetén a begépelt teljes szöveg kijelölésre kerülne, és ezt nem szeretnénk.
if (DataType == SmartTagLib.IF_TYPE.IF_TYPE_CELL)
{
RecognizerSite.CommitSmartTag(smartTagName, 1, Text.Length, RecognizerSite.GetNewPropertyBag());
}
Ha Excel alkalmazásban aktivizálódik a címke, akkor egy kis vörös háromszög jelenik meg a cella jobb alsó sarkában, így jelezve a felhasználónak, hogy a kurzort a cella fölé mozgatva láthatóvá teheti a címke menüjét.
A megjelenő menüben jelen esetben a „Szöveg megadása” pontot választva adhatunk meg egy megjegyzés szöveget a cellához.
Ezt úgy érhetjük el, hogy a paraméterként kapott adatot, mely a cella területe lesz, egy Excel.Range objektummá konvertáljuk.
Excel.Range er = (Excel.Range)Target;
Létrehozunk egy példányt a SmartForm projektben deklarált Form1 osztályunkból, mely egy dialógusablakot takar, majd megjelenítjük azt.
Form1 f = new Form1();
f.ShowDialog();
Amennyiben a szövegmezőben megadtunk egy karakterláncot, vagyis a Form1 osztály NoteText változója tartalmazza azt, akkor a szöveget egy object típusú változóban helyezzük el, és meghívjuk az Excel.Range objektum NoteText metódusát, annak első paraméterében megadva a megjelenítendő megjegyzés szöveget.
object t = f.NoteText;
er.NoteText(t,1,5);