Loading
Selection Combobox 1 changes selection Combobox 2
Hi,

 

On a dialog I have 2 comboboxes. When the user changes the value of combobox 1, the values have to be changed in combobox 2.

 

I have a script to change the values in the table. See below.

 

But how do i refresh the currentpage with its values?

 

I tried with two exact the same dialogs but when i do a doaction on the combobox the install exits with an error.

 

Anyone can help me with this?

 

Const msiViewModifyInsertTemporary = 7

 

Const IDOK = 1

 

Function PopulateComboBox( )

 

' open and execute a view to the ComboBox table

 

Set viewlist = Database.OpenView("SELECT * FROM 'ComboBox' WHERE 'Property'='INSTALLTYPE'")

 

viewlist.Execute

 

Set reclist = viewlist.Fetch

 

' delete any existing records

 

While Not (reclist Is Nothing)

 

viewlist.Modify 6, reclist ' 6 = delete

 

Set reclist = viewlist.Fetch

 

Wend

 

' open and execute a view to the _UltimoInstall table

 

Set viewprop = Database.OpenView("SELECT * FROM 'MyInstall' WHERE '"&Session.Property("DBTYPE")&"' = '1'")

 

viewprop.Execute

 

Set recprop = viewprop.Fetch

 

r = 0

 

While Not (recprop Is Nothing)

 

' ListBox record fields are Property, Order, Value, Text

 

Set recnewlist = Installer.CreateRecord(4)

 

r = r + 1

 

recnewlist.StringData(1) = "INSTALLTYPE"

 

recnewlist.IntegerData(2) = r

 

recnewlist.StringData(3) = recprop.StringData(1)

 

recnewlist.StringData(4) = recprop.StringData(2)

 

' insert the temporary ListBox record

 

viewlist.Modify msiViewModifyInsertTemporary, recnewlist

 

' fetch the next Property record

 

Set recprop = viewprop.Fetch

 

Wend

 

' clean up

 

viewprop.Close

 

viewlist.Close

 

' return success to MSI

 

PopulateComboBox = IDOK

 

End Function

  • I believe that you are running into a limitation of Windows Installer user interface. According to the ControlEvent table doc it isn't possible to perform any actions from a ComboBox control:

     

    "On Windows XP or earlier operating systems, users can publish a control event only by interacting with a Checkbox Control or Pushbutton Control. With Windows Server 2003, users can publish a control event only by interacting with a Checkbox Control, SelectionTree Control, and Pushbutton Control. Listing other controls in the Control_ field has no effect."

     

    ControlEvent Table

     

    http://msdn.microsoft.com/en-us/library/aa368037(VS.85).aspx

     

    One workaround option is to create a PushButton control and label it something like 'Refresh'. Then when the user clicks on the Refresh button you can have a NewDialog event to go to the cloned dialog which will have the refreshed ComboBox controls.

     

    Hope this helps.
    Expand Post

Loading
Selection Combobox 1 changes selection Combobox 2