This post: Is this a bug in the Grid Cell alignment? discusses a grid cell alignment issue.

 

When the grid is created and there is a cursor open in the current work area, a grid column will be created for each field in the cursor. The alignment for the column is initialized based on the column type. Integer fields are set to be right justified.  When the subsequent code changes the column control source from integer to character, the alignment is not changed.

Below is the same code with a single change: after the ControlSource of the column is changed (which changes the data type from numeric to character) the Alignment is set explicitly.

 

 

 

PUBLIC oForm

oForm=CREATEOBJECT("MyForm")

oForm.show

 

DEFINE CLASS MyForm as Form

      left=100

      height=200

      width=600

      allowoutput=.f.

      PROCEDURE init(cFilename)

            IF .t.

                  CREATE CURSOR test (num i,name c(40))

                  INSERT INTO test VALUES (0,"name")

                  INSERT INTO test VALUES (1,"name")

            ELSE

                  CREATE CURSOR test (num c(10),name c(40))

                  INSERT INTO test VALUES ("0","name")

                  INSERT INTO test VALUES ("1","name")

            ENDIF

            this.AddObject("grd","grid")

            WITH this.grd as grid

                  .Visible=1

                  .Height=thisform.Height

                  .Width=thisform.Width

                  WITH this.grd.column1 as Column

                        .header1.caption="Name"

                        .ControlSource="'some data         '"

                        .Alignment=3      && add this line after the control source is changed

                        .Width=250

                  ENDWITH

                  LOCATE

            ENDWITH

ENDDEFINE