LPARAMETERS lcOldClass, lcNewClass, lcClassLib, lcApplyTo, lcKeepProperty, lcParams * * Quick and dirty builder for grid columns(ix).controls * gridbuild(lcOldClass, lcNewClass, lcClassLib [,lcApplyTo] [,lcKeepProperty] [,lcParams]) * Author : Cetin Basoz - simple tasks library * lcOldClass = Class to change ie: header * lcNewClass = New Class ie: myheader * lcClassLib = vcx or prg containing definition - if prg extension is required * lcApplyTo = Apply to columns list ie: 1,4,5 - all assumed if empty or ignored * lcKeepProperty - A property to keep as is if any ie: Caption * lcParams - Params passed to new class if any - ie : lnLeft, lnTop * * Sample calls : * 1)Replace all header class with myheader class (from myheaderset.prg) and keep caption property * =gridbuild("header","myheader","myheaderset.prg",,"caption") * * 2)Replace all textbox class with mytextbox class (from myclasses.vcx) * =gridbuild("textbox","mytextbox","myclasses") * * 3)Replace all textbox class with mytextbox class (from myclasses.vcx) in columns 1,3,5 * gridbuild("textbox","mytextbox","myclasses","1,3,5") * * Select one or more grids on form and call * IF type("lcOldClass") # "C" ; or type("lcNewClass") # "C" ; or type("lcClassLib") # "C" OR empty("lcOldClass") ; or empty("lcNewClass") ; or empty("lcClassLib") WAIT window nowait "Required params missing." RETURN ENDIF lcApplyTo = iif(type("lcApplyTo")#"C","0",lcApplyTo) lcKeepProperty = iif(type("lcKeepProperty")="C",lcKeepProperty,"name") lcParams = iif(type("lcParams")="C",","+lcParams,"") IF ratc(".prg",lcClassLib)>0 IF !upper(lcClassLib)$set("Procedure") SET proc to (lcClassLib) additive ENDIF ELSE IF !upper(lcClassLib)$set("classlib") SET classlib to (lcClassLib) additive ENDIF ENDIF ASELOBJ(oGrids) FOR each oGrid in oGrids IF !oGrid.baseclass = "Grid" LOOP ENDIF FOR each oColumn in oGrid.columns IF lcApplyTo=="0" or inlist(oColumn.columnorder, &lcApplyTo) FOR each oControl in oColumn.controls IF upper(oControl.class) = upper(lcOldClass) lcKeepName = oControl.name lcKeepPropValue = oControl.&lcKeepProperty oColumn.removeobject(lcKeepName) oColumn.addobject(lcKeepName,lcNewClass &lcParams) WITH eval("oColumn."+lcKeepName) .&lcKeepProperty = lcKeepPropValue ENDWITH ENDIF ENDFOR ENDIF ENDFOR ENDFORCetin