Recipe 16.4 Execute a Smart Tag Action Without Displaying the Smart Tag
16.4.1 Problem
In my application I would like to use the Financial Symbol smart tag so that users
will be directed to the Stock Quote on MSN MoneyCentral. I
don't want to display the smart tag, which also
presents two additional actions—this might confuse the user.
How can I configure a combo box control so that when the user selects
a symbol, the Stock Quote on MSN MoneyCentral is
automatically displayed in a browser window?
16.4.2 Solution
The built-in smart tags that ship with Access are somewhat limited in
that they do not allow you to configure them by adding or removing
actions. The Financial Symbol smart tag looks up
information about a financial symbol on MSN MoneyCentral, allowing
you to take the following actions:
Obtain a stock quote on MSN MoneyCentral. Obtain a report about the company on MSN MoneyCentral. Obtain recent news about the company on MSN MoneyCentral.
In Access, you enable the Financial Symbol smart tag on a field or
control that contains a financial symbol—the familiar
abbreviations seen on stock tickers.
To execute only a single action—obtaining a stock
quote—you need to enable smart tags in code by setting a
control's
SmartTags property. Once
you've enabled the smart tag in your code, you can
then execute a smart tag action. Once the action executes, you can
then disable the smart tag so that it is never displayed to the user.
Follow these steps to configure a combo box to use the Financial
Symbol smart tag to display a stock quote when the user selects an
item:
Create a combo box control on a form. In the sample application, the
Row Source property is set to a query that selects the ticker symbol
and company name from the Companies table. The Bound Column is set to
the ticker symbol since that is the value that will be used for the
Financial Symbol smart tag. Create an event procedure for the AfterUpdate event. This event runs
after the user selects an item in the combo box. The code turns off
screen painting so that setting the smart tag property will not cause
screen flashing: Private Sub cboTickers_AfterUpdate( )
On Error GoTo HandleErr
Me.Painting = False The code then sets the financial symbol smart tag for the control: Me.cboTickers.Properties("SmartTags").Value = _
"urn:schemas-microsoft-com:office:smarttags#stockticker" The code then executes the first action of the smart tag. The
SmartTags collection represents the smart tags assigned to the
control, and SmartTagActions is the collection of available actions.
You refer to them by their ordinal position in the list: Me.cboTickers.SmartTags(0).SmartTagActions(0).Execute Once the action has executed, remove the smart tag control so that it
will never be displayed to the user: Me.cboTickers.Properties("SmartTags").Value = "" Whenever you turn off painting on the form, you should implement an
error handler and exit label to ensure that painting gets turned back
on again, even if an error occurs: ExitHere:
Me.Painting = True
Exit Sub
HandleErr:
MsgBox Err.Number & " " & Err.Description
Resume ExitHere
End Sub Here is the complete code listing: Private Sub cboTickers_AfterUpdate( )
On Error GoTo HandleErr
Me.Painting = False
' Set the financial symbol smart tag
Me.cboTickers.Properties("SmartTags").Value = _
"urn:schemas-microsoft-com:office:smarttags#stockticker"
' Execute the first action listed
Me.cboTickers.SmartTags(0).SmartTagActions(0).Execute
' Remove the financial symbol smart tag
Me.cboTickers.Properties("SmartTags").Value = ""
ExitHere:
Me.Painting = True
Exit Sub
HandleErr:
MsgBox Err.Number & " " & Err.Description
Resume ExitHere
End Sub
16.4.3 Discussion
The SmartTags collection contains one or more
SmartTag
objects. You can refer to a single SmartTag object in the collection
by using the Item method or the index. The collection is zero-based,
so the following code fragment refers to the first SmartTag for the
ctl control:
ctl.SmartTags(0)
|
Unlike in Access, the SmartTags collections in Microsoft Excel and
Microsoft Word are one-based.
|
|
The SmartTag object has several properties, such as Application,
IsMissing, Name and Property. The SmartTagActions property represents
a collection of actions for an individual smart tag. These actions
are processes that are programmed into a smart tag as individual
SmartTagAction objects. The SmartTagAction object has several
properties and a single method, Execute. In this example, the first
SmartTagAction in the SmartTagActions collection is executed:
SmartTagActions(0).Execute
By dynamically assigning a smart tag in code, executing an action,
and then removing the smart tag, you can take advantage of built-in
smart tag functionality without presenting unnecessary options to the
user.
|