I am not yet on v15, still on v13
from my memory - on a Mac - popups have not been tubbable.

for the combo box - here is what I use for them (it is simple)
Whether this can resolve your problem with them I do not know, but it 
might be worth a try.

On Data Change is the only event turned on for the combo box
Follows the combos object method:

Case of 
: (Form event=On Data Change)  //if the user made/changed combo 
selection
utl_combo_Check_Selection (Self 
;<>x_User_Option;->[Experiments]Assigned_to_Tech;->cmb_User_IDs)
End case 


utl_combo_Check_Selection, accepts a pointer to the combo box, a text 
value to display if the entry is incorrect, pointer to the field or var 
to assign the value, and (optionally) a pointer to a secondary array 
which is assigned to the field/var, rather then the actual entry 
(basically an ID value). 

In the above example, [Experiments]Assigned_to_Tech will be assigned a 
longint User ID, rather then the User's name.

The code for this method follows:
  //Project Method:  utl_Combo_Check_Selection
  // $1 - pointer - to combo box to check the entered value
  // $2 - string - text to display in message box - what the combo is 
asking for
  // $3 - pointer (optional) - to field/var to assign value
  // $4 - pointer (optional) - to secondary array to assign value from

  //determines if the user entry in a combo box ($1) is valid.
  //that is doe sthe user entered value exist in the combo boxes' list
  //of values.  If the entry is valid, either the that value, or 
alternatively the
  //corresponding secondary array value ($4) is assigned.
  //Returns a longint to show that the user entry was valid

  //RETURNS - longint - location where item was found returns -1 if not 
acceptable
  //• Updated 2/25/16 by Chip - added utility call for type check
C_POINTER($1;$3;$4;$Combo;$Destination;$Secondary)
C_TEXT($2;$Alert_Specifics;$Entered_Value;$msg)
C_LONGINT($Loc;$0;$Type)

$Combo:=$1  //combo box being edited/modified
$Alert_Specifics:=$2  //text for user message if an error occurs

If (Count parameters>=3)
$Destination:=$3  //destination field - if provided

If (Count parameters=4)
$Secondary:=$4  //secondary (parallel) array to use for assigning field 
value - if provided 
Else 
$Secondary:=<>ptr_Nil
End if 
Else 
$Destination:=<>ptr_Nil
$Secondary:=<>ptr_Nil
End if 

If ($Combo->{0}="")  //if the combo box was cleared - clear the 
underlying field too
$Loc:=Find in array($Combo->;<>x_Combo_None)  //try to locate a "none" 
option
Else   //there is a value in the combo - locate it in the allowed 
(contents of the combo box) values 
$Loc:=Find in array($Combo->;$Combo->{0})
End if 

If ($Loc>0)  //the entered/selected item was found - user 
elected/entered a valid value

If (Not(Nil($Destination)))  //there is a destination field/var to 
populate

If (Not(Nil($Secondary)))  //there is a secondary value to use
$Destination->:=$Secondary->{$Loc}
Else   // no secondary, but there is a destination, assignment use 
combo array value
$Destination->:=$Combo->{$Loc}
End if 
Else   //
  //do nothing - no additional field/var to get value for
End if 
  //assign the combo box - makes the combo entry match the text in the 
pop-up list
$Combo->{0}:=$Combo->{$Loc}

Else   //the entered value is not valid

If ($Combo->{0}#"")  //stop message for empty item selection
GOTO OBJECT($Combo->)  //reset the entry area back to the combo box
$Type:=Type($Combo->)  //invalid entry - clear data entry area of the 
combo box

Case of 
: ($Type=String array) | ($Type=Text array)
$Entered_Value:=$Combo->{0}
$Combo->{0}:=""

: ($Type=Real array) | ($Type=Real array) | ($Type=LongInt array) | 
($Type=Integer array)
$Entered_Value:=String($Combo->{0})
$Combo->{0}:=0

: ($Type=Date array)
$Entered_Value:=String($Combo->{0})
$Combo->{0}:=<>d_Empty_Date
End case 
$msg:="'"+$Entered_value+"' is not an allowed "+$Alert_Specifics+<>x_Cr
$msg:=$msg+"Please select a(n) "+$Alert_Specifics+", from the list."
utl_msg_Alert ($msg)  //tell user

If (Not(Nil($Destination)))  //if there is a destination specified - 
clear it too
$Type:=Type($Destination->)

Case of 
: (utl_type_Is_Alpha ($Destination))
  //: ($Type=Is String Var) | ($Type=Is Alpha Field) | ($Type=Is Text)
$Destination->:=""

: (utl_type_Is_Numeric ($Destination))
  //: ($Type=Is LongInt) | ($Type=Is Real)
$Destination->:=0

: ($Type=Is Date)
$Destination->:=<>d_Empty_Date
End case 
End if 
Else   //selection is empty

If (Not(Nil($Destination)))  //if there is a destination specified - 
clear it too
$Type:=Type($Destination->)

Case of 
: ($Type=Is String Var) | ($Type=Is Alpha Field) | ($Type=Is Text)
$Destination->:=""

: ($Type=Is LongInt) | ($Type=Is Real)
$Destination->:=0

: ($Type=Is Date)
$Destination->:=<>d_Empty_Date
End case 
End if 
End if 
End if 
$0:=$Loc
  //



On Wed, 19 Oct 2016 10:23:19 -0700, Janet Jonas wrote:
> I have always used Combo boxes on my forms from time immemorial, but 
> we were having crashing issues using them in v15, and the code was 
> always clunky because most of the time the selection must be limited 
> to the choices in the array anyway. I recreated the controls on a 
> couple of problematic forms, changing them to "Popup Drop down List” 
> objects with fewer events needed and less code in the object methods. 
> I also checked the “Focusable” and  “Tabable” properties for the 
> objects. The controls work great, are much cleaner and faster for 
> those of us who are “clickers” but our data entry staff are used to 
> tabbing into controls, using a down arrow if necessary to drop down 
> the list and typing away, all from the keyboard in order to maintain 
> data entry efficiency by not going back and forth to a mouse. They 
> are now upset because the controls are NOT tabable in any way, the 
> cursor just skips to the next field. We are using v15.2 HF2. Anything 
> I’m missing? Is this a bug in the properties and Tab Order dialogs, 
> or is a bug in functioning?
> 
> JJ
> 
> **********************************************************************
> 4D Internet Users Group (4D iNUG)
> FAQ:  http://lists.4d.com/faqnug.html
> Archive:  http://lists.4d.com/archives.html
> Options: http://lists.4d.com/mailman/options/4d_tech
> Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
> **********************************************************************
**********************************************************************
4D Internet Users Group (4D iNUG)
FAQ:  http://lists.4d.com/faqnug.html
Archive:  http://lists.4d.com/archives.html
Options: http://lists.4d.com/mailman/options/4d_tech
Unsub:  mailto:4d_tech-unsubscr...@lists.4d.com
**********************************************************************

Reply via email to