Understanding the ToolBarSrv.cs File
Following is the full source code for the ToolBarSrv.cs class, used to implement UFT One record and run support for the TD.SandBar.Toolbar control:
using System;
using Mercury.QTP.CustomServer;
//using TD.SandBar;
namespace ToolBar
{
[ReplayInterface]
public interface IToolBarSrvReplay
{
void ClickButton(string text);
}
/// <summary>
/// Summary description for ToolBarSrv.
/// </summary>
public class ToolBarSrv:
CustomServerBase,
IToolBarSrvReplay
{
// You shouldn't call Base class methods/properties at the constructor
// since its services are not initialized yet.
public ToolBarSrv()
{
//
// TODO: Add constructor logic here
//
}
#region IRecord override Methods
#region Wizard generated sample code (commented)
/// <summary>
/// To change Window messages filter, implement this method.
/// The default implementation is to get only the control's
/// Windows messages.
/// </summary>
public override WND_MsgFilter GetWndMessageFilter()
{
return(WND_MsgFilter.WND_MSGS);
}
/*
/// <summary>
/// To catch Windows messages, you should implement this method.
/// Note that this method is called only if the CustomServer is running
/// under UFT process.
/// </summary>
public override RecordStatus OnMessage(ref Message tMsg)
{
// TODO: Add OnMessage implementation.
return RecordStatus.RECORD_HANDLED;
}
*/
#endregion
/// <summary>
/// If you are extending the Record process, you should add your event
/// handlers to listen to the control's events.
/// </summary>
public override void InitEventListener()
{
TD.SandBar.ToolBar oControl = (TD.SandBar.ToolBar)SourceControl;
oControl.ButtonClick += new
TD.SandBar.ToolBar.ButtonClickEventHandler(oControl_ButtonClick);
//AddHandler("ButtonClick", new
//TD.SandBar.ToolBar.ButtonClickEventHandler(oControl_ButtonClick));
}
/// <summary>
/// At the end of the Record process, this method is called by UFT to
/// release all the handlers the user added in the InitEventListener method.
/// Note that handlers added via UFT methods are released by
/// the UFT infrastructure.
/// </summary>
public override void ReleaseEventListener()
{
TD.SandBar.ToolBar oControl = (TD.SandBar.ToolBar)SourceControl;
oControl.ButtonClick -= new
TD.SandBar.ToolBar.ButtonClickEventHandler(oControl_ButtonClick);
}
#endregion
#region Record events handlers
private void oControl_ButtonClick(object sender,
TD.SandBar.ToolBarItemEventArgs e)
{
TD.SandBar.ToolBar oControl = (TD.SandBar.ToolBar)SourceControl;
// Add a step in the test for the test object with the ClickButton method
// and the tooltip text as an argument
base.RecordFunction("ClickButton",
RecordingMode.RECORD_SEND_LINE, e.Item.ToolTipText);
}
#endregion
#region Replay interface implementation
public void ClickButton(string text)
{
TD.SandBar.ToolBar oControl = (TD.SandBar.ToolBar)SourceControl;
//Find the correct item in the toolbar according to its tooltip text.
for(int i=0; i<oControl.Items.Count; i++)
{
//Found the correct ButtonItem
if(oControl.Items[i].ToolTipText == text)
{
// Retrieve the rectangle of the button's boundaries and
// locate its center
System.Drawing.Rectangle oRect=oControl.Items[i].ButtonBounds;
int x = oRect.X + oRect.Width/2;
int y = oRect.Y + oRect.Height/2;
//Click the middle of the button item
base.MouseClick(x, y, MOUSE_BUTTON.LEFT_MOUSE_BUTTON);
break;
}
}
//Add the step to the report
base.ReplayReportStep("ClickButton",
EventStatus.EVENTSTATUS_GENERAL, text);
}
#endregion
}
}

