Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to set the default Text Box Class of Columns in a Gr
Message
From
10/11/2001 03:23:00
Cetin Basoz
Engineerica Inc.
Izmir, Turkey
 
General information
Forum:
Visual FoxPro
Category:
Classes - VCX
Miscellaneous
Thread ID:
00579973
Message ID:
00580094
Views:
16
>I want all a Grid's Columns to use MyTextBox SubClass instead of the Base TextBox Class. This can be done by manually adding a new Textbox to each column and setting the CurrentControl to that the new object. But this is slow and if I increase the number of Columns, I have to do it again.

Russel,
This builder is the one I use frequently. Create your grid first with default builder or other means. Before adding any method code to contained objects select one or more grids on form and run this from command window (read comments) :
*GridBuild.prg
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