DotNetFactory interface functions (5) – Create ComboBox
Parent page: Service Functions – DotNetFactory (QTP, VBScript)
Creating .NET objects from VBScript/QTP
You can create a ComboBox (Dropdown Listbox/InputBox Object) and assign required properties within one line by calling the function below. The function has one mandatory parameter (list of available selection items – packed in the Dictionary object) and a set of optional parameters provided in the Dictionary object.
Mandatory parameters through Dictionary object: “Key – Value” pairs. Keys are used to retrieve the Values only. Values will form the contents of the dropdown.
Currently supported optional parameters:
ComboBox Width and Height.
ComboBox – Left, Top.
- p.text – Prompt text displayed by default in the input area.
- p.index – Zero-based index of the item to be selected by default.
- p.item – Exact string of the existing item to be selected by default.
Note. You may code as many optional parameters as required. Just follow the established syntax and keep in mind that parameter index for Dictionary must be unique – otherwise it will overwrite the previous parameter.
References
For the complete .NET ComboBox Class reference please visit:
http://msdn.microsoft.com/en-us/library/system.windows.forms.combobox(VS.80).aspx
If you want to have ComboBox editable as TextBox you need to implement a more comprehensive code covering settings for .DropDownStyle property.
Used resources
Service Functions – String (QTP, VBScript)
Implementing optional and default parameters
Create ComboBox
Public Function CreateComboBox(ByVal objItems, ByVal objParameter)
Dim sText, intWidth, intHeight, intMaxLength
Dim intLeft, intTop
Dim objComboBox, objComboBoxStyle
Dim Iter, dvKeys, sItem, intIndex
'Verify parameters
If TypeName (objParameter) <> "Dictionary" Then
Set objParameter = CreateObject("Scripting.Dictionary")
End If
sText = objParameter.Item("p.text")
intWidth = InitLong(objParameter.Item("p.width"), 100)
intHeight = InitLong(objParameter.Item("p.height"), 20)
intLeft = IntVal(objParameter.Item("p.left"))
intTop = IntVal(objParameter.Item("p.top"))
intMaxLength = InitLong(objParameter.Item("p.length"), 255)
Set objComboBoxStyle = DotNetFactory.CreateInstance("System.Windows.Forms.ComboBoxStyle", "System.Windows.Forms")
Set objComboBox = DotNetFactory.CreateInstance("System.Windows.Forms.ComboBox", "System.Windows.Forms")
objComboBox.Text = sText
objComboBox.Width = intWidth
objComboBox.Height = intHeight
objComboBox.Left = intLeft
objComboBox.Top = intTop
objComboBox.MaxLength = intMaxLength
objComboBox.DropDownStyle = objComboBoxStyle.DropDownList
Set objComboBoxStyle = Nothing
If TypeName (objItems) <> "Dictionary" Then
Set CreateComboBox = objComboBox
Exit Function
End If
dvKeys = objItems.Keys()
For Iter = 0 To UBound(dvKeys)
sItem = objItems.Item(dvKeys(Iter))
If sItem <> "" Then
objComboBox.Items.Add(sItem)
End If
Next
If objParameter.Exists("p.index") Then
intIndex = IntVal(objParameter.Item("p.index"))
If intIndex <= UBound(dvKeys) Then
objComboBox.SelectedIndex = intIndex
End If
End If
If objParameter.Exists("p.item") Then
sItem = objParameter.Item("p.item")
intIndex = objComboBox.FindStringExact(sItem)
If intIndex <> - 1 Then
objComboBox.SelectedIndex = CInt(intIndex)
End If
End If
Set CreateComboBox = objComboBox
End Function
Example
Set objLst = CreateComboBox(AssociateParameters("1 = Option 1, 2 = Option 2"), AssociateParameters("p.index = 0"))

