TTIWMultiColumnComboBox bug


BUG:  When there is some component below a 'TTIWMultiColumnCombobox' when it drop down its items it will stay behind the component below it. This behavior do not happens with TIWComboBox in the same situation. If you want to reproduce this just put any component below  a 'TTIWMultiColumnCombobox' in the 'AdvToolButton' form on TMS demo project and click on it to drop down its items.

QUESTION: Is there some way for showing ALL the items of all columns in the selected row? Currently only the first column item is shown on the component after a selection.

 Joao Lira.

I am using Delphi Berlin 10.1 Update 2 and Intraweb 14.1.4


- Please make sure the ZIndex value of the TTIWMultiColumnComboBox is higher than that of the component positioned below.

- Unfortunately it's currently not supported to display values from columns other than the first one in the selected row. However, this is a good suggestion and we'll consider adding this function in a future version.

Setting 'ZIndex' to a value greather than the component below solved that problem. However, this procedure isn't necessary for 'TIWComboBox'. For that component even if 'ZIndex' is lower than that of the component below it works as expected.

One suggestion for this and other TMS Intraweb components is let the right button (with the down arrow) make it close the content as well. Currently the user has to press the 'ESC' key or click out the component to make it close the items. What do you think? This also is the behavior in 'TIWComboBox' and may confuse the user when she / he uses forms with both components.

Thank you.

Joao Lira.
  • Your remark about not having to set the ZIndex on a TIWComboBox component is correct.
    The difference is that the TIWComboBox uses the browser's built-in combo box control while the TIWMultiColumnComboBox is fully custom created HTML control. While the behavior of both controls' dropdown is similar it is not fully identical.

    - Thank you for your suggestion.
    We'll consider improving the behavior of the drop down button TIWMultiColumnCombBox in a future version.

Hello, Bart,

  Thank you for your attention and explanations!

  TMS Intraweb is a great set of components and can be even better!

   Joao Lira.

Another problem I am facing up with this component: I have a 'TTIWMultiColumnComboBox' populated with some items. I am not using events on this case. When I choose an item, select other component and come back to the 'MultiColumn' component to select another item I can't do that. The component holds the first selected item and won't show up the remain items for selection. I checked and rechecked the component properties looking for something that could be related to this behavior but I couldn't find anything to led me to the solution.

I tested that on Chrome, Firefox and IE, but the problem repeats on all cases.

Joao Lira.

You can set LookupMethod to lmSelect instead of lmFilter to make sure that all items from the list stay accessible in the dropdown.

Thanks, Bart, it worked well.


What confused me is that the  'MultiColumnCombo' in the 'AdvToolButton.pas' sample uses 'ImFilter' in the 'LookupMethod' property and work as expected as if it were using 'ImSelect'. How can this happen?

Joao Lira.

Please note that the MultiColumnComboBox in the TMS IW FeaturesDemo can display multiple items when there is already an item selected because there are multiple items with the same value in the first column. It's only in the second and third column that the values are different.

Ok, thanks.

As a suggestion this component could store each line in a 'TStringList' as the 'TIWComboBox' because on that component it is easy use the 'Object' feature to add together a pointer to anything useful, as usually is done there or, at least, you could add an object for each row inserted. The 'MultiColumnComboBox' component is great but, currently, you have to keep a paralel list of objects if you want to associate each line with a set of data.

Joao Lira.

Thank you for your suggestion.
We'll have to investigate if this kind of functionality can be added in a future version.