* Assumes all aplication forms are in forms folder * For forms that have a DE replaces 'ALL' DE method codes with * custom BeforeOpenTables code Clear Clear All Local lnForms,ix Local Array arrForms[1] lnForms = Adir(arrForms, "forms\*.scx") TEXT to m.lcMethod noshow PROCEDURE BeforeOpenTables UpdateDE(this) ENDPROC EndText For ix=1 To lnForms Use ('forms\'+arrForms[m.ix,1]) Locate For Atc('dataenvironment',BaseClass)>0 If !Eof() Replace methods With m.lcMethod Endif Use Compile Form (arrForms[m.ix,1]) EndforUpdateDE enables to work with different data paths. However for this sample code do not forget to 'clear all' before modifying forms. What I do is like (command window):
*setdbpath looks like lparameters tcPath Public oApp oApp = NewObject('myApp','main.prg') && oApp sets application data path in init from a table if !empty(m.tcPath) * change oApp properties... endif
* UpdateDE.prg - sample Lparameters toDE set exclusive off *set ... && other sets Local Array aDEMembers[1] Local lnMembers,ix,lcMembers lnMembers = Amembers(aDEMembers,toDE,2) For ix=1 To m.lnMembers With Evaluate('toDe.'+aDEMembers[m.ix]) If Lower(.BaseClass) == 'cursor' ; and Atc(oApp.cAppDBC,.Database) > 0 .Database = Addbs(oApp.cAppDataPath)+oApp.cAppDBC Endif Endwith EndforCetin