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 >* 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 >Endfor >Cetin