Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Custom writebuffer
Message
From
26/01/1997 12:38:36
 
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
00018427
Message ID:
00018431
Views:
31
>I'm having trouble with my custom write buffer.When I am on a record and make changes then go to the next record using my toolbar the writebuffer traps for changes and allows me to commit or revert my changes. But if I were to make changes then select my listbox and go to another record, the changes are already committed. How do I check if data has changed in any of my text boxes and prompt the user to save, discard or cancel the last action?

One more time, here's the fantastic WriteBuffer() method.
* Save the current buffer
* Call from Save() and AddNew()
* We need to make sure the hierarchy is not coming from a Valid() event
* because this will generate an error
* In Visual FoxPro 5, we are not allowed to call SetFocus() from a Valid() event
LOCAL lcProgram,lnCompteur
lcProgram=PROGRAM(1)
lnCompteur=2
DO WHILE LEN(lcProgram)>0
   lcProgram=EVALUATE('PROGRAM('+ALLTRIM(STR(lnCompteur))+')')
   lnCompteur=lnCompteur+1
   IF UPPER(RIGHT(lcProgram,6))='.VALID'
      RETURN
   ENDIF
ENDDO

IF TYPE('_Screen.ActiveForm.ActiveControl')='O' 
   IF UPPER(_Screen.ActiveForm.ActiveControl.BaseClass)=='GRID'
      * Test if this is an active grid column
      IF _Screen.ActiveForm.ActiveControl.ActiveColumn<>0
         IF UPPER(EVAL('_Screen.ActiveForm.ActiveControl.Columns(_Screen.ActiveForm.ActiveControl.ActiveColumn).'+; TRIM(_Screen.ActiveForm.ActiveControl.Columns(_Screen.ActiveForm.ActiveControl.ActiveColumn).CurrentControl)+;
           '.BaseClass'))='OPTIONGROUP'
            _Screen.ActiveForm.ActiveControl.SetFocus()
            ELSE
=EVAL('_Screen.ActiveForm.ActiveControl.Columns(_Screen.ActiveForm.ActiveControl.ActiveColumn).'+; TRIM(_Screen.ActiveForm.ActiveControl.Columns(_Screen.ActiveForm.ActiveControl.ActiveColumn).CurrentControl)+;
              '.SetFocus()')
         ENDIF
      ENDIF
      ELSE
      _Screen.ActiveForm.ActiveControl.SetFocus()
   ENDIF
ENDIF
Michel Fournier
Level Extreme Inc.
Designer, architect, owner of the Level Extreme Platform
Subscribe to the site at https://www.levelextreme.com/Home/DataEntry?Activator=55&NoStore=303
Subscription benefits https://www.levelextreme.com/Home/ViewPage?Activator=7&ID=52
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform