.Reference: Structures and Equates

Category: Controls - MLG

Date: 02-16-2022

Return to Index


 
How to Format Grid Colors and Fonts
 
MLG fills in all the grid default colors and fonts etc. upon creatation of a grid.  If these are not to the 's taste then substitutions can be made.  This is done by filling in a GridInit structure and using the %MLG_SETGRIDEXSTYLE message.  Only structure fields that are none zero will be used (except for the user data field).  Be aware that when a grid is destroyed it will destroy all the objects it is using.  This is an issue with fonts.  It is advisable to only use programmer adhoc fonts created just for use with a particular grid if a built-in font does not suitable the need.  MLG uses 3 built-in fonts:  Arial, Courier, and Times Roman.
 
How to Format a Row or Column
 
Row and columns can be designated to be of five main types 1) General Textbox, 2) Combobox, 3) Checkbox, 4) Date textbox and 5) Number textbox.  Numbers and Dates are just specialized Textboxes.  Columns are typically formatted to be a certain way as a result of a database field type so most of the time only columns will be custom formatted.  On specialized grids, sometimes rows need to have a particular format.  A row format is alway superior to a column format.
 
 
 
The information for formats of a row or column is held in a RowColDataType structure.  Each row and each column stores this information.  Typically, zero is the default behavior.  If the programmer needs to alter the structure after it has been set, it may be better to use the message  %MLG_GETROWFORMAT or %MLG_GETCOLFORMAT first to first a temporary  RowColDataType structure so the previous settings are not lost upon update.  Some messages like %MLG_SETROWEXTRA are careful about this.
 
 
 
New in Version 1.08 is flexible display formatting of Number formats.  Beside the ability to define the number of digits and decimal places as before, now you can define the display of a number in a cell using the power of 's FORMAT$ function.  The programmer can use up to 20 masks or which 5 have been predefined.  A typical mask definition could be:
 
 
 
SendMessage hGrid, %MLG_SETNUMFORMATSTR ,6,"0000.00"
 
 
 
for putting the mask "0000.00in mask slot number 6.
 
 
 
The use the %MLG_SETROWFORMAT message with the PrintUsing field set to 6 of the RowColDataType structure to set the Row or Column to the display format (assuming that the FormatNumber field is also set.  See Formatting to review mask options.
 
 
 
 
 
How to Override the Format of a Row or Column
 
 
 
Also new to Version 1.08 is the ability to override formatting on a row or column level, to a cell level.  By creating a Format Override Arrayany cell within that array can be defined to have its individual Font display (normal,boldor italics), RGB ColorBorder (top,line,bottom, or right heavy lines), and PrintUsing mask which will assume that a valid number will be in the cell or zero will be displayed.  The maximum size of the override array is the currently sized sheet (up to 65,000 rows).  Only one Format Override Array can be defined per sheet and it can not be resized dynamically.  It would have to be deleted and a new one created if a resize is necessary.  New to version 2.00 is the z switch, which will automatically set up a formatoverride array to match the size of your dimensioned grid up to 65,000 rows. The steps to set up a Format Override Array  to alter cell 2,6 would be:
 
 
 
LOCAL fo AS FormatOverride
 
SendMessage hGrid ,%MLG_CREATEFORMATOVERRIDE,35,6 'set up a 35 row by 6 column array
 
 
 
fo.MyRGB=%YELLOW
 
fo.MyFont=2  'Italic
 
fo.MyUsing=%MLG_CURRENCY
 
 
 
SendMessage hGrid, %MLG_SETFORMATOVERRIDE ,MAKLNG(2,6),VARPTR(fo)
 
 
 
------------------------------------------------------------
 
Main format types and their attributes
 
 
 
General Textbox Type
 
       Color
 
       Justification
 
       WriteLock
 
       Text Length
 
       Text Case
 
Date Textbox Type
 
       Color
 
       Justification
 
       WriteLock
 
       Date Format
 
Number Textbox Type
 
       Color
 
       Justification
 
       WriteLock
 
       Number Format
 
       PrintUsing (for display only)  NEW TO VERSION 1.08
 
Combobox Type
 
       Editable or NonEditable
 
Checkbox Type
 
       None
 
 
 
 
 
Notes:
 
 
 
1)Double click Editable Combobox to edit text        
 
 
 
---------------------------------------------------------------
 
List of Equates
 
%FALSE                 = 0
 
%TRUE                  = 1
 
 
 
'Cell Types
 
%MLG_TYPE_EDIT         = 0 'default - may be overridden
 
%MLG_TYPE_DRAW         = 1
 
%MLG_TYPE_CHECKBOX     = 2
 
%MLG_TYPE_COMBOSTATIC  = 3
 
%MLG_TYPE_COMBOEDIT    = 4
 
%MLG_TYPE_USERBUTTON   = 5
 
%MLG_TYPE_DATE         = 6
 
%MLG_TYPE_NUMBER       = 7
 
 
 
'Write Lock
 
%MLG_NOLOCK            = 0
 
%MLG_LOCK              = 1
 
%MLG_LOCK_SKIPROW      = -1 'Will not allow a locked row to be selected
 
'Hilight 
 
%MLG_HILTE             =-1
 
%MLG_NOHILITE          = 0
 
'Case Formats
 
%MLG_NOCASE            = 0
 
%MLG_UCASE             = 1
 
%MLG_LCASE             = 2 
 
%MLG_MCASE             = 3
 
'Justification formats
 
%MLG_JUST_LEFT         = 0
 
%MLG_JUST_RIGHT        = 1
 
%MLG_JUST_CENTER       = 2
 
%MLG_JUST_WORDWRAP     = 3 
 
'Date formats
 
%MMDDYYYY              = 1
 
%MMDDYYYYH             = 2  'dot instead of a slash
 
%DDMMYYYY              = 3
 
%DDMMYYYYH             = 4  'dot instead of a slash
 
%MMYYYY                = 5
 
%MMYYYYH               = 6  'dot instead of a slash
 
%YYYYMMDD              = 7
 
%YYYYMMDDH             = 8 'dot instead of a slash
 
%YYYYMM               = 9
 
%YYYYMMH              = 10 'dot instead of a slash
 
 
 
'Redimensioning Error Constants
 
%MLG_ERR_TOTROWS1       =  1 'Requested Total Rows is less than 1
 
%MLG_ERR_TOTROWS65000   =  2 'Requested Total Rows is more than allowable total rows (65000)
 
%MLG_ERR_TOTCOLS1       =  3 'Requested Total Columns is less than 1
 
%MLG_ERR_TOTCOLS255     =  4 'Requested Total Columns is more than allowable total columns (255)
 
%MLG_ERR_DIMROWS1       =  5 'Requested Dimensioned Rows is less than 1
 
%MLG_ERR_DIMROWS65000   =  6 'Requested Dimensioned Rows is more than allowable total rows (65000)
 
%MLG_ERR_DIMCOLS1       =  7 'Requested Dimensioned Columns is less than 1
 
%MLG_ERR_DIMCOLS255     =  8 'Requested Dimensioned Columns is more than allowable total columns (255)
 
%MLG_ERR_TOTROWSDIMROWS =  9 'Requested Total Rows is greater than Dimensioned Rows
 
%MLG_ERR_TOTCOLSDIMCOLS =  10 'Requested Total Columns is greater than Dimensioned Columns
 
%MLG_ERR_GRIDMEM        =  11 'Access to the grid memory block failed
 
%MLG_ERR_STRMEMREALLOCATION =  12 'ReAllocation of string memory failed
 
%MLG_ERR_ROWMEMREALLOCATION =  13 'ReAllocation of row formatting memory failed
 
 
 
'WorkSheet Information  NEW TO VERSION 1.08
 
%MLG_SHEET_GETNUM = 1   'Get slot number of a sheet given the its name
 
%MLG_SHEET_GETNAME = 2  'Get the name of a sheet given the slot number
 
%MLG_SHEET_GETTOT = 3   'Get count of sheets
 
%MLG_SHEET_GETRIGHT = 4 'Get sheet slot number directly to the right of given sheet
 
%MLG_SHEET_GETLEFT = 5  'Get sheet slot number directly to the left of given sheet
 
%MLG_SHEET_GETFIRST = 6  'Get sheet slot number of first sheet
 
%MLG_SHEET_GETLAST = 7   'Get sheet slot number of last sheet
 
%MLG_SHEET_GETID = 8   'Get the Sheet ID number given the sheet slot number 
 
%MLG_SHEET_GETNUMFROMID = 9   'Get sheet slot number given the sheet id number
 
 
 
'Format Override Borders  NEW TO VERSION 1.08
 
%MLG_TOP    = 1
 
%MLG_LEFT   = 2
 
%MLG_BOTTOM = 4
 
%MLG_RIGHT  = 8
 
%MLG_BOX    = 99  ' to be used with MLG_SetFormatOverrideRange wrapper only
 
%MLG_GRID   = 100 ' to be used with MLG_SetFormatOverrideRange wrapper only
 
 
 
 
 
'Format Masks of the Format Using    NEW TO VERSION 1.08
 
%MLG_NODECIMAL     = 1  '"#"
 
%MLG_COMMAS        = 2  '"#,"
 
%MLG_COMMASDECIMAL = 3  '"#,.00"
 
%MLG_CURRENCY      = 4  '"$* #,.00"
 
%MLG_PERCENT       = 5  '"0.0%
 
 
 
'Workbook Properties
 
%MLG_USERTABMOVE = 1
 
%MLG_USERTABEDIT = 2
 
 
 
'Format Override Borders
 
%MLG_TOP = 8
 
%MLG_LEFT = 4
 
%MLG_BOTTOM = 2
 
%MLG_RIGHT = 1
 
 
 
'Font
 
%MLGSYSFONTNORM = 0
 
%MLGSYSFONTBOLD = 1
 
%MLGSYSFONTITAL = 2
 
%MLGSYSFONTTABNORM = 3
 
%MLGSYSFONTTABBOLD = 4
 
%MLGSYSFONTNORMVERT = 5
 
%MLGSYSFONTBOLDVERT = 6
 
%MLGSYSFONTRES = 7
 
 
 
%MLG_FONT_USER = 0
 
%MLG_FONT_ARIAL = 3
 
%MLG_FONT_COURIERNEW = 1
 
%MLG_FONT_TIMESNEWROMAN = 2
 
 
 
%MLG_FONT_SIZE8 = 0
 
%MLG_FONT_SIZE10 = 1
 
%MLG_FONT_SIZE12 = 2
 
%MLG_FONT_SIZE14 = 3
 
%MLG_FONT_SIZE16 = 4
 
%MLG_FONT_SIZE20 = 5
 
%MLG_FONT_SIZE24 = 6
 
%MLG_FONT_SIZE36 = 7
 
 
 
'CellColors
 
%CELLCOLORWHITE = 0
 
%CELLCOLORBLACK = 1
 
%CELLCOLORRED   = 2
 
%CELLCOLORSALMON = 3
 
%CELLCOLORGREEN = 4
 
%CELLCOLORLIGHTGREEN = 5
 
%CELLCOLORBLUE = 6
 
%CELLCOLORLIGHTBLUE = 7
 
%CELLCOLORMAGENTA = 8
 
%CELLCOLORDARKMAGENTA = 9
 
%CELLCOLORCYAN = 10
 
%CELLCOLORAQUAMARINE = 11
 
%CELLCOLORKHAKI = 12
 
%CELLCOLORBROWN = 13
 
%CELLCOLORYELLOW = 14
 
%CELLCOLORORANGE = 15 
 
 
 
'Callbacks
 
%MLG_DRAWCALLBACK          = 1
 
%MLG_FORMULACALLBACK       = 2
 
%MLG_NUMBERCALLBACK        = 3
 
%MLG_LISTBOXCALLBACK       = 4
 
%MLG_DATECALLBACK          = 5
 
%MLG_SHEETTYPECALLBACK     = 6
 
 
 
'Format Override Cell Attribute Types
 
%MLG_TYPE_CELLTYPE         = 0 'default - may be overridden
 
%MLG_TYPE_WRITELOCK        = 1
 
%MLG_TYPE_USING            = 2
 
%MLG_TYPE_FONT             = 3
 
%MLG_TYPE_BKGCOLOR         = 4
 
%MLG_TYPE_FGCOLOR          = 5
 
%MLG_TYPE_BORDER           = 6
 
%MLG_TYPE_CASE             = 7
 
%MLG_TYPE_JUST             = 8
 
 
 
 
 
List of Structures
 
 
 
TYPE RowColDataType            'A Row Format is superior to a Column Format
 
   CellType        AS LONG    'Default(text) = 0 , text= 1,checkbox=2,dropdownlist=3,editable                                                'dropdownlist=4
 
   VisWidth        AS LONG    'if column, this is the width in pixels (zero is hidden)
 
   FormatExtra     AS LONG    'if negative then the row or column will be high lighted.  May have '                                                'future uses also.
 
   WriteLock       AS LONG    'locked <> 1 , unlocked = 0
 
   FormatColor     AS LONG    'RGB of the text (foreground color) of the cell  - zero is black
 
   FormatCase      AS LONG    'No case formatting = 0 , upper case > 0 , lower case < 0
 
   FormatLength    AS LONG    'No Length restriction (%MLG_MAXCELLLEN max) = 0 or max characters (2                                                'characters minimum)
 
   FormatJustify   AS LONG    'Left = 0 (default), Right = 1, Center = 2
 
   FormatNumber    AS SINGLE 'Integer portion is count left of decimal point, decimal is portion                                 'right of decimal point ie "8.3" Note-a comma is also recoginized 
 
                                               'as a dot in the display of the grid.
 
   Extra           AS LONG    'Anything you want, could be used as Record Number in Row
 
   List            AS ASCIIZ PTR    'Used for the list box.  Reserved
 
   FormatDate      AS LONG     ' 0=mm/dd/yyyy  etc.
 
   TempHide        AS LONG   'Internal
 
   SortExtra       AS LONG        'Internal
 
   PrintUsing      AS LONG        'PrintUsing on Numeric Fields   1 to %MLG_NUMFORMATSTR  
 
END TYPE
 
 
 
TYPE GridInit
 
hFont               AS DWORD   'Cell Font
 
hFontBold           AS DWORD   'Header Font for column and row headers
 
hFontItalic         AS DWORD   'Italic for option format override NEW TO VERSION 1.08
 
cyCharEx            AS LONG    Deprecated in version 2.00
 
CellBkColorRGB      AS LONG    'Cells Background Color
 
CellLineColorRGB    AS LONG    'Cell Line Color
 
WindowBkColorRGB    AS LONG    'Window Background Color outside of cell area
 
RCHiLiteRGB        AS LONG    'The color to high light a row or column
 
UserData            AS LONG    'Use for anything you wish
 
END TYPE
 
 
 
CHANGED IN VERSION 2.00
 
TYPE FormatOverRide
 
    CellFont AS BYTE   '255  bits 1 2 3  size   4 5 font name  6 7 8 Bold Italic Underline   zero is automatic
 
    CellType AS BYTE   'bits 1 2 3 is cell type
 
                       'bit 4 is writelock
 
                       'bits 5 6 7 8 list pointers  1 to 15
 
                           'Cell Type 0 automatic (text) = Justify Case
 
                           'Cell Type 1 text with wordwrap = Justify Case DT_WORDBREAK
 
                           'Cell Type 2 checkbox = not used
 
                           'Cell Type 3 combo static = 1 to 15 lists
 
                           'Cell Type 4 combo edit = 1 to 15 lists
 
                           'Cell Type 5 user button = not used
 
                           'Cell Type 6 date = 1 to 15 date formats
 
                           'Cell Type 7 number = 1 to 15 number formats
 
    CellFormatExtra AS BYTE   'bit 1 2 3 4  border  bit 5 6 case   bit 7 8 justify
 
    CellColor AS BYTE    '16 Background colors, 16 text colors
 
END TYPE      
 
 
 


created by gbSnippets
http://www.garybeene.com/sw/gbsnippets.htm