*After user made his/her prefferences >DIMENSION gaGrid[1] >FOR i=1 TO Thisform.Grid.ColumnCount > gaGrid[i] = Thisform.Grid.Columns(i).Width >ENDFOR >SAVE TO < UserID >.MEM ALL LIKE gaGrid* >******** >* Grid.Init() >RESTORE FROM < UserID >.MEM >FOR i=1 TO This.ColumnCount > This.Columns(i).Width = gaGrid[i] >ENDFOR Good point, but I tend to use SAVE TO MEMO for something like that; it allows you to have a table with user preferences. Rather than a .MEM file per user, you could have a table with grid preferences. A simple example; imagine a table GridPref with a UserID C(??), a GridID I, and a memo field GridSets. To take your example a step further. NB. This is greatly oversimplified. <pre> * Grid.Init() * SELECT GridPref LOCATE FOR UserID = cMyCurrentUserID AND GridID = this.iGridIDKey IF FOUND() RESTORE FROM MEMO GridSets ADDITIVE * And use the restored arrays to set your grid; all start with iaGrid RELEASE ALL LIKE iaGrid* ELSE * The user never has been here, so he doesn't have a pref saved ENDIF * Grid.Release() * SELECT GridPref LOCATE FOR UserID = cMyCurrentUserID AND GridID = this.iGridIDKey IF ! FOUND() INSERT INTO GridPref VALUES (cMyCurrentUserID, this.iGridIDKey) ENDIF * Save your settings to arrays starting with iaGrid SAVE TO MEMO GridSets ALL LIKE iaGrid*This provides a starting point for a general mechanism for saving your preferences and restoring them, without having to save lots of individual files and coming up with a complex .MEM file naming scheme.