Popup Dialog - Tab away from a pulldown changes the pulldown assignment

Opi Lovers

Consider the dialog below, populated as shown
Cursor is on the pulldown menu showing “SharePoint”

Now I hit tab. The cursor moves correctly to the “Suffix” text box
But the Tab key also has the effect of changing the last pulldown assignment from “SharePoint” to “Teams”

It only does this with this entry.
No others.
Any ideas?
You can see this if you feel inclined at about t=9s in the video

It's probably a bug in the dialog code. Can we see it?

Sure. Thanks for your interest

Ugly code but it works wonders for me :slight_smile:

025_000_Laptop3.dcf (309.3 KB)

2025-10-28 07h39m57_js.zip (17.8 KB)

It doesn't do it here, fwiw.

Hmm. Odd
Thanks I will check on my home setup

Thanks….

FWIW, I have the same behavior as Jon.

If it can help you understand/find the issue, here are the generated log/output from my execution:

001000 025_000_Laptop3
001000-120 Flag_NoAlias    initialised    =  1
002000_Msg_Loop_ENTER
   002-000-000  case_ComboA1_ENTRY
       000      Check_Box_Ask.value         =  true
       020-000 Check_Box_Ask.value         =  true
   002-000-900 case_ComboA1_EXIT
              002-400-000 case Check_Box_Ask ENTER        :true
              002-400-900 case Check_Box_Ask EXIT         :true
              002-400-000 case Check_Box_Ask ENTER        :true
              002-400-900 case Check_Box_Ask EXIT         :true
   002-000-000  case_ComboA1_ENTRY
       000      Check_Box_Ask.value         =  true
       020-000 Check_Box_Ask.value         =  true
   002-000-900 case_ComboA1_EXIT


      002-100-000     case ComboB2 ENTER                   :
           090-010    case ComboA1 :AdminT Should be AdminT
              100a    case BLANK                           ::
              110a    Dlg_Control_Check_Box_Folder.value   :true:
              120a    Check_Box_Ask.value         =  false
      002-100-900 case ComboB2 EXIT                       :
      002-100-900 case ComboB2 EXIT                       :
      002-100-900 case ComboB2 EXIT                       :

              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
            002-300-000 case Check_Box_Folder ENTER     :undefined
            002-300-900 case Check_Box_Folder ENTER     :undefined
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false


      002-100-000     case ComboB2 ENTER                   :SAP
           090-010    case ComboA1 :AdminT Should be AdminT
              100b case Default (Expect Empty)        :SAP:
              100b Dlg_Control_Check_Box_Folder.value :true: before
              100b Dlg_Control_Check_Box_Folder.value :false: after
              100b case	Default										 :SAP:
							100b Dlg_Control_Check_Box_Ask.value :false:	before
							100b Dlg_Control_Check_Box_Ask.value :false:	after
      002-100-900 case ComboB2 EXIT                       :SAP
      002-100-900 case ComboB2 EXIT                       :SAP
      002-100-900 case ComboB2 EXIT                       :SAP

            002-300-000 case Check_Box_Folder ENTER     :undefined
            002-300-900 case Check_Box_Folder ENTER     :undefined
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false


      002-100-000     case ComboB2 ENTER                   :ScreenConnect
           090-010    case ComboA1 :AdminT Should be AdminT
              100b case Default (Expect Empty)        :ScreenConnect:
              100b Dlg_Control_Check_Box_Folder.value :false: before
              100b Dlg_Control_Check_Box_Folder.value :false: after
              100b case	Default										 :ScreenConnect:
							100b Dlg_Control_Check_Box_Ask.value :false:	before
							100b Dlg_Control_Check_Box_Ask.value :false:	after
      002-100-900 case ComboB2 EXIT                       :ScreenConnect
      002-100-900 case ComboB2 EXIT                       :ScreenConnect
      002-100-900 case ComboB2 EXIT                       :ScreenConnect

            002-300-000 case Check_Box_Folder ENTER     :undefined
            002-300-900 case Check_Box_Folder ENTER     :undefined
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false


      002-100-000     case ComboB2 ENTER                   :SharePoint
           090-010    case ComboA1 :AdminT Should be AdminT
              100b case Default (Expect Empty)        :SharePoint:
              100b Dlg_Control_Check_Box_Folder.value :false: before
              100b Dlg_Control_Check_Box_Folder.value :false: after
              100b case	Default										 :SharePoint:
							100b Dlg_Control_Check_Box_Ask.value :false:	before
							100b Dlg_Control_Check_Box_Ask.value :false:	after
      002-100-900 case ComboB2 EXIT                       :SharePoint
      002-100-900 case ComboB2 EXIT                       :SharePoint
      002-100-900 case ComboB2 EXIT                       :SharePoint

            002-300-000 case Check_Box_Folder ENTER     :undefined
            002-300-900 case Check_Box_Folder ENTER     :undefined
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false


      002-100-000     case ComboB2 ENTER                   :SharePoint
           090-010    case ComboA1 :AdminT Should be AdminT
              100b case Default (Expect Empty)        :SharePoint:
              100b Dlg_Control_Check_Box_Folder.value :false: before
              100b Dlg_Control_Check_Box_Folder.value :false: after
              100b case	Default										 :SharePoint:
							100b Dlg_Control_Check_Box_Ask.value :false:	before
							100b Dlg_Control_Check_Box_Ask.value :false:	after
      002-100-900 case ComboB2 EXIT                       :SharePoint
      002-100-900 case ComboB2 EXIT                       :SharePoint
      002-100-900 case ComboB2 EXIT                       :SharePoint

         002-200-000 case Dlg_Control_EditC3 ENTRY   :
         002-200-900 case Dlg_Control_EditC3 EXIT    :
            002-300-000 case Check_Box_Folder ENTER     :undefined
            002-300-900 case Check_Box_Folder ENTER     :undefined
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
              002-400-000 case Check_Box_Ask ENTER        :false
              002-400-900 case Check_Box_Ask EXIT         :false
         002-200-000 case Dlg_Control_EditC3 ENTRY   :
         002-200-900 case Dlg_Control_EditC3 EXIT    :
002200-010 Return code                         = 0   0=CANCEL, 1=Ok<< Dialog Closed
002200 Msg_Loop_EXIT
002200 Msg_Loop_EXIT
002200 Msg_Loop_EXIT

003000 Process_Dialog_box_RETURN_START
003000 Process_Dialog_box_RETURN_START
003000 Process_Dialog_box_RETURN_START
003000-000 Dlg.result == 0 So exit()

1 Like
        var Dlg_Msg = Dlg.GetMsg();
        if (!Dlg_Msg.result) break;
        //
        switch(Dlg_Msg.Control)
        {
            case "Combo_Box_Alpha1":
                // Want to populate Combo_Box_Bravo2 in this case
                DOpus.Output("   002-000-000  case_ComboA1_ENTRY");

You're checking which control the messages relate to, but not which event they're telling you happened. Controls generate messages for more events than just their selections changing. For example, there are events telling you when you push tab and move focus off one control and on to another.

I wrote a wrapper for handling UI dialogs in an event driven manner. Have a look at my MsgLoopHandler. That might help to prevent errors from handling the events yourself.

1 Like

Thank you all for responses

I will cogitate…. :slight_smile:

I knew there was an overclocker scene... didn't realize there's an overlogger scene too. Death by a thousand logs :wink:

2 Likes