sethandler() help please
- Posted by David Davis <gdavis at hypercon.net> Sep 04, 2003
- 417 views
I'm fairly new to Euphoria and am trying to get this piece of code working. The Save button is supposed to switch between Save and Close depending on whether anything has been changed. It will switch one way, but not back. Prolly a dumb mistake on my part, but I'm just not seeing it! Code follows: include Win32lib.ew without warning -- Window Product_Edit global constant Product_Edit = createEx( Window, "Edit Product List", 0, Default, Default, 403, 412, 0, 0 ) global constant Product_Text = createEx( CText, "Product", Product_Edit, 5, 0, 110, 20, 0, 0 ) global constant QTY_Text = createEx( CText, "QTY", Product_Edit, 120, 0, 40, 20, 0, 0 ) global constant Price_Text = createEx( CText, "Price", Product_Edit, 165, 0, 70, 20, 0, 0 ) global constant Product_List = createEx( List, "", Product_Edit, 5, 20, 110, 355, or_all({WS_VSCROLL}), 0 ) global constant QTY_List = createEx( List, "", Product_Edit, 120, 20, 40, 355, 0, 0 ) global constant Price_List = createEx( List, "", Product_Edit, 165, 20, 70, 355, 0, 0 ) global constant Add_Button = createEx( PushButton, "Add", Product_Edit, 295, 40, 90, 30, 0, 0 ) global constant Edit_Button = createEx( PushButton, "Edit", Product_Edit, 295, 90, 90, 30, 0, 0 ) global constant Delete_Button = createEx( PushButton, "Delete", Product_Edit, 295, 140, 90, 30, 0, 0 ) global constant Cancel_Button = createEx( PushButton, "Cancel", Product_Edit, 295, 275, 90, 30, 0, 0 ) global constant Save_Button = createEx( PushButton, "Close", Product_Edit, 295, 325, 90, 30, 0, 0 ) -- Variables -- global integer isnew, haschanged, NeedToSave, YES, NO global sequence hl isnew=0 haschanged=0 YES=1 NO=0 NeedToSave=NO procedure save_off() setText(Save_Button, "Close") setHandler(Save_Button, w32HClick, {-1, routine_id("Close_Button_onClick")}) hl = getHandler(Save_Button, w32HClick) addItem( Product_List, hl ) end procedure procedure save_on() setText(Save_Button, "Save") setHandler(Save_Button, w32HClick, {-1, routine_id("Save_Button_OnClick")}) addItem( Product_List, "Save On" ) end procedure -- Button Procedures -- procedure Close_Button_onClick(integer self, integer event, sequence params) NeedToSave=NO closeWindow(Product_Edit) end procedure procedure Save_Button_onClick(integer self, integer event, sequence params) NeedToSave=NO save_off() end procedure procedure Add_Button_onClick(integer self, integer event, sequence params) NeedToSave=YES save_on() end procedure procedure Delete_Button_onClick(integer self, integer event, sequence params) NeedToSave=YES save_on() end procedure procedure Edit_Button_onClick(integer self, integer event, sequence params) NeedToSave=YES save_on() end procedure procedure Cancel_Button_onClick(integer self, integer event, sequence params) closeWindow(Product_Edit) end procedure -- Program Procedures -- procedure Product_Edit_onDestroy(integer self, integer event, sequence params) integer junk if haschanged=1 then junk = message_box("You have made changes.\n" & "Would you like to save them?", "Product List Changed!", MB_ICONWARNING + MB_YESNO + MB_TASKMODAL) if junk = IDYES then --Save_Button_onClick() end if end if end procedure -- Handlers -- --onOpen[Product_Edit] = routine_id("onLoad_Product_Edit") --onChange[List1] = routine_id("onChange_List1") setHandler(Add_Button, w32HClick, routine_id("Add_Button_onClick")) setHandler(Edit_Button, w32HClick, routine_id("Edit_Button_onClick")) setHandler(Delete_Button, w32HClick, routine_id("Delete_Button_onClick")) setHandler(Cancel_Button, w32HClick, routine_id("Cancel_Button_onClick")) setHandler(Save_Button, w32HClick, routine_id("Close_Button_onClick")) setHandler(Product_Edit, w32HDestroy, routine_id("Product_Edit_onDestroy")) WinMain( Product_Edit,Normal )