Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Saving Grid Columns Positions
Message
From
25/01/2008 03:00:32
Lutz Scheffler
Lutz Scheffler Software Ingenieurbüro
Dresden, Germany
 
 
To
25/01/2008 02:45:49
General information
Forum:
Visual FoxPro
Category:
Coding, syntax & commands
Environment versions
Visual FoxPro:
VFP 9 SP2
Miscellaneous
Thread ID:
01285431
Message ID:
01285435
Views:
42
This message has been marked as the solution to the initial question of the thread.
Hi Jos,

the first problem is, how do you store your settings? There are several ways and that will define how to save them.

What I can do is, show you what to store. The first method puts all information (width, pos,partitionj) into an empty object.
The second will reload.
PROCEDURE SaveProperty
 LPARAMETERS;
  toStore AS EMPTY

 LOCAL;
  lcColumn AS CHARACTER,;
  lnLoop1  AS INTEGER

 toStore = CREATEOBJECT('EMPTY')
 WITH THIS
  FOR lnLoop1=1 TO .COLUMNCOUNT
   lcColumn = .COLUMNS(lnLoop1).NAME+[_]
   ADDPROPERTY(toStore,lcColumn+[WIDTH]      ,.COLUMNS(lnLoop1).WIDTH)
   ADDPROPERTY(toStore,lcColumn+[COLUMNORDER],.COLUMNS(lnLoop1).COLUMNORDER)
  ENDFOR &&lnLoop1

  ADDPROPERTY(toStore,[LOCKCOLUMNS]    ,.LOCKCOLUMNS)

  IF .SPLITBAR THEN
   ADDPROPERTY(toStore,[PARTITION]      ,.PARTITION)
   ADDPROPERTY(toStore,[LOCKCOLUMNSLEFT],.LOCKCOLUMNSLEFT)
  ELSE &&.SPLITBAR
   ADDPROPERTY(loStore,[PARTITION]      ,0)
   ADDPROPERTY(loStore,[LOCKCOLUMNSLEFT],0)
  ENDIF &&.SPLITBAR
 ENDWITH &&THIS
ENDPROC &&SaveProperty

PROCEDURE LoadProperty
 LPARAMETERS;
  toStore AS EMPTY

 LOCAL;
  lcColumn AS CHARACTER,;
  lnLoop1 AS INTEGER

 WITH THIS
  IF THIS.COLUMNCOUNT=0 OR THIS.RECORDSOURCE=="" THEN
* IF THIS.COLUMNCOUNT=0
   RETURN .F.
  ENDIF &&THIS.COLUMNCOUNT=0 OR THIS.RECORDSOURCE==""
  IF !PEMSTATUS(toStore,'PARTITION',5) THEN
   RETURN .F.
  ENDIF &&!PEMSTATUS(.empSettings.empProps,'PARTITION',5)

  FOR lnLoop1=1 TO .COLUMNCOUNT
   lcColumn = .COLUMNS(lnLoop1).NAME+[_]
   IF PEMSTATUS(toStore,lcColumn+[WIDTH],5) THEN
    .COLUMNS(lnLoop1).WIDTH = EVALUATE([toStore.]+lcColumn+[WIDTH])
   ENDIF &&PEMSTATUS(.empSettings.empProps,lcColumn+[WIDTH],5)
   IF PEMSTATUS(toStore,lcColumn+[COLUMNORDER],5) THEN
    .COLUMNS(lnLoop1).COLUMNORDER = EVALUATE([toStore.]+lcColumn+[COLUMNORDER])
   ENDIF &&PEMSTATUS(toStore,lcColumn+[COLUMNORDER],5)
  ENDFOR &&lnLoop1

  .LOCKCOLUMNS = MIN(toStore.LOCKCOLUMNS,.COLUMNCOUNT)

  IF .SPLITBAR THEN
   .PARTITION       = MIN(toStore.PARTITION,.WIDTH-5)
   .LOCKCOLUMNSLEFT = MIN(toStore.LOCKCOLUMNSLEFT,.COLUMNCOUNT)
  ENDIF &&.SPLITBAR
 ENDWITH &&THIS
ENDPROC &&LoadProperty
HTH

Agnes
>Hi All
>
>If a user moves the columns of a grid around how can I save them so that the next time I display the same report the columns re-appear in the users preferred order?
>
>Thanks.
Words are given to man to enable him to conceal his true feelings.
Charles Maurice de Talleyrand-Périgord

Weeks of programming can save you hours of planning.

Off

There is no place like [::1]
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform