Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Grids - replace the textbox programmatically
Message
From
26/12/2006 08:34:32
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
 
To
26/12/2006 06:37:27
Hans-Otto Lochmann
Dr. Lochmann Consulting Gmbh
Frankfurt, Germany
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Miscellaneous
Thread ID:
01180164
Message ID:
01180173
Views:
37
This message has been marked as a message which has helped to the initial question of the thread.
>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
Çetin Basöz

The way to Go
Flutter - For mobile, web and desktop.
World's most advanced open source relational database.
.Net for foxheads - Blog (main)
FoxSharp - Blog (mirror)
Welcome to FoxyClasses

LinqPad - C#,VB,F#,SQL,eSQL ... scratchpad
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform