Plateforme Level Extreme
Abonnement
Profil corporatif
Produits & Services
Support
Légal
English
Custom writebuffer
Message
De
26/01/1997 12:38:36
 
Information générale
Forum:
Visual FoxPro
Catégorie:
Codage, syntaxe et commandes
Divers
Thread ID:
00018427
Message ID:
00018431
Vues:
35
>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
Précédent
Suivant
Répondre
Fil
Voir

Click here to load this message in the networking platform