| Subject | 
		Re: radio button | 
	 
	
		| From | 
		
Akshat Kapoor <akshat.kapoor@kapoorsons.in>		 | 
	 
	
		| Date | 
		Tue, 14 Jul 2020 11:18:10 +0530 | 
	 
	
		| Newsgroups | 
		dbase.getting-started | 
	 
	
| Attachment(s) | 
radio.wfm | 
 
 >  
> Not sure if this is going to help with your specific scenario, but the  
> following works nicely for me: 
>  
> First, try to avoid thwe OnGotFocus event and use OnChange instead. 
>  
> Then, for all radiobuttons of a group, use just one common function for  
> the OnChange event. If the user is making a choice, this common event  
> will fire at least twice, but that doesn't matter. 
 
Good Morning Mustansir,Heinz, 
 
I tried to experiment with radiobuttons using the attached form. 
 
I have been unable to prevent the double firing of onChange event but  
have located the root cause. 
 
Let's say there are 3 radiobuttons and first one is selected. 
And user selects 2nd one The sequence of firing will be 
 
radio1_onChange 
radio2_onChange 
 
So it is not a bug but WAD 
 
May try later today for a solution 
 
Regards 
Akshat 
 
  |   ** END HEADER -- do not remove this line 
// 
// Generated on 13-07-2020 
// 
parameter bModal 
local f 
f = new radioForm() 
if (bModal) 
   f.mdi = false // ensure not MDI 
   f.readModal() 
else 
   f.open() 
endif 
 
class radioForm of FORM 
   with (this) 
      onOpen = class::FORM_ONOPEN 
      height = 16.0 
      left = 46.2857 
      top = 0.0 
      width = 83.1429 
      text = "" 
   endwith 
 
   this.RADIOBUTTON1 = new RADIOBUTTON(this) 
   with (this.RADIOBUTTON1) 
//      onChange = class::RADIOBUTTON1_ONCHANGE 
      height = 1.0909 
      left = 13.0 
      top = 3.0 
      width = 15.7143 
      text = "Radiobutton1" 
      group = true 
   endwith 
 
   this.RADIOBUTTON2 = new RADIOBUTTON(this) 
   with (this.RADIOBUTTON2) 
//      onChange = class::RADIOBUTTON2_ONCHANGE 
      height = 1.0909 
      left = 13.4286 
      top = 4.9545 
      width = 15.7143 
      text = "Radiobutton2" 
   endwith 
 
   this.RADIOBUTTON3 = new RADIOBUTTON(this) 
   with (this.RADIOBUTTON3) 
//      onChange = class::RADIOBUTTON3_ONCHANGE 
      height = 1.0909 
      left = 13.8571 
      top = 6.9091 
      width = 15.7143 
      text = "Radiobutton3" 
      value = true 
   endwith 
 
 
   function RADIOBUTTON1_onChange() 
      form.radiobutton1.onchange = null 
      form.radiobutton2.onchange = null 
      form.radiobutton3.onchange = null 
      ?[radio button 1 on change] 
//      if msgbox("Do you want to change the values","Alert",4) = 6 
         form.radio = 1 
//      else 
//         do case 
//            case form.radio = 1 
//               form.radiobutton1.value = true 
//            case form.radio = 2 
//               form.radiobutton2.value = true 
//            case form.radio = 3 
//               form.radiobutton3.value = true 
//         endcase 
//      endif 
      form.reset() 
      return 
 
   function RADIOBUTTON2_onChange() 
      form.radiobutton1.onchange = null 
      form.radiobutton2.onchange = null 
      form.radiobutton3.onchange = null 
      ?[radio button 2 on change] 
//      if msgbox("Do you want to change the values","Alert",4) = 6 
         form.radio = 2 
//      else 
//         do case 
//            case form.radio = 1 
//               form.radiobutton1.value = true 
//            case form.radio = 2 
//               form.radiobutton2.value = true 
//            case form.radio = 3 
//               form.radiobutton3.value = true 
//         endcase 
//      endif 
      form.reset() 
      return 
 
   function RADIOBUTTON3_onChange() 
      form.radiobutton1.onchange = null 
      form.radiobutton2.onchange = null 
      form.radiobutton3.onchange = null 
      ?[radio button 3 on change] 
//      if msgbox("Do you want to change the values","Alert",4) = 6 
         form.radio = 3 
//      else 
//         do case 
//            case form.radio = 1 
//               form.radiobutton1.value = true 
//            case form.radio = 2 
//               form.radiobutton2.value = true 
//            case form.radio = 3 
//               form.radiobutton3.value = true 
//         endcase 
//      endif 
      form.reset() 
      return 
    
 
   function form_onOpen() 
      form.radio = 1 
      form.radiobutton1.value = true 
      form.reset() 
      return 
 
   function reset() 
      form.radiobutton1.onchange = form.radiobutton1_onchange 
      form.radiobutton2.onchange = form.radiobutton2_onchange 
      form.radiobutton3.onchange = form.radiobutton3_onchange 
   return 
    
 
endclass 
 
 
  |   
		 |