loForm = createobject('zForm') >loForm.show >read events > >define class zForm as form > Caption = "Open debugout, and click on When button" > Name = "Form1" > Autocenter = .T. > Width = 360 > Height = 150 > visible = .t. > > ADD OBJECT text1 AS textbox WITH ; > Height = 23, ; > Left = 20, ; > Width = 80, ; > TabIndex = 1, ; > Top = 10, ; > Name = "Text1", ; > value = 0 > ADD OBJECT command1 AS commandbutton WITH ; > Top = 10, ; > Left = 140, ; > Height = 27, ; > Width = 120, ; > Caption = "When", ; > TabIndex = 2, ; > Name = "Command1" > ADD OBJECT command2 AS commandbutton WITH ; > Top = 110, ; > Left = 280, ; > Height = 27, ; > Width = 60, ; > Caption = "Exit", ; > TabIndex = 3, ; > Cancel = .T. > Name = "Command2" > ADD OBJECT label1 AS label WITH ; > top = 44, ; > left = 20, ; > width = 250, ; > wordwrap = .T., ; > autosize = .t., ; > Caption = "When event fires twice when the button does not have focus before click!!?" > ADD OBJECT label2 AS label WITH ; > top = 84, ; > left = 20, ; > width = 250, ; > wordwrap = .T., ; > autosize = .t., ; > Caption = "When event fires once when the button has focus before click!!?" > PROCEDURE command1.When > debugout this.Name,program() > thisform.text1.value = thisform.text1.value + 1 > ENDPROC > PROCEDURE command1.GotFocus > debugout this.Name,program() > endproc > PROCEDURE command2.When > debugout this.Name,program() > ENDPROC > PROCEDURE command2.click > thisform.release > clear events > endproc >enddefinethis is true for CommandButton,Checkbox,combobox,listbox,optiongroup,....
ACTIVATE WINDOW "debug Output" SET EVENTLIST TO Click,Valid,When,Message,InteractiveChange SET EVENTTRACKING ON loForm = createobject('zForm') loForm.show FOR k=1 TO 20 CHRSAW(0.2) KEYBOARD '{SPACEBAR}' PLAIN CLEAR DOEVENTS NEXT define class zForm as form Caption = "Click on When button" Name = "Form1" Autocenter = .T. Width = 360 Height = 150 visible = .t. ADD OBJECT text1 AS textbox WITH ; Height = 23, ; Left = 20, ; Width = 80, ; TabIndex = 2, ; Top = 10, ; Name = "Text1", ; value = 0 ADD OBJECT command1 AS CHECKBOX WITH ; Top = 10, ; Left = 140, ; Height = 27, ; Width = 120, ; Caption = "When", ; TabIndex = 1, ; Name = "Command1" ADD OBJECT label1 AS label WITH ; top = 44, ; left = 20, ; width = 250, ; wordwrap = .T., ; autosize = .t., ; Caption = "When event fires twice when the button does not have focus before click!!?" ADD OBJECT label2 AS label WITH ; top = 84, ; left = 20, ; width = 250, ; wordwrap = .T., ; autosize = .t., ; Caption = "When event fires once when the button has focus before click!!?" PROCEDURE command1.Valid RETURN .F. && this is ignored ENDPROC * workaround * PROCEDURE command1.Click * NODEFAULT * ENDPROC PROCEDURE command1.When thisform.text1.value = thisform.text1.value + 1 ENDPROC PROCEDURE load ADDPROPERTY(this,"lock",this) ENDDEFINE