Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Grids - replace the textbox programmatically
Message
From
26/12/2006 11:05:50
Hans-Otto Lochmann
Dr. Lochmann Consulting Gmbh
Frankfurt, Germany
 
 
To
26/12/2006 08:34:32
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01180164
Message ID:
01180213
Views:
19
Hi Cetin,

thank you - I will try it later, but it looks pretty useful. I like the idea with the lcKeepName and lcKeepPropValue.

Hans

>>Hi All,
>>
>>does anybody know how to replace the textbox in a column of a grid programmatically at runtime?
>>
>>I know how to do this from the form / class designer when in edit mode.
>>
>>Programmatically it is no problem to change the class and the classlib of the header object at runtime, e. g. replacing it with say a command button class, because the column class has a HeaderClass and a HeaderClassLibrary property. I did not find anything as far as the "textbox" in a column class is concerned.
>>
>>Any help welcome.
>>Hans
>
>You can also use this:
>
>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
>Endfor
>
Cetin
Previous
Reply
Map
View

Click here to load this message in the networking platform