>with myForm.myGrid.Colum1 >LOCAL ARRAY; > laHeaderProps(2,1) >*Move the properties needed from old to new header: >laHeaderProps(1,1)= .Header1.Caption >laHeaderProps(2,1)= .Header1.FONTBOLD >*and so on > >*remove old header >.REMOVEOBJECT('Header1') >.NEWOBJECT('Header2',"MyHeader","MyClass.prg") >*rename new header >.Header2.name = 'Header1' >* now we have a new header Header1! >.Header1.Caption = laHeaderProps(1,1) >.Header1.FONTBOLD = laHeaderProps(2,1) >wait .header1.class >endwith >That's the way - except I think the RemoveObject is unnecessary. Last time I went through this in detail, a column can't exist without a header, so the moment you remove it, a default header object is created. It vanishes, of course, when you add a new one. Suspend after the Removeobject(), and look it up in the debugger, or in command window - it still has a header. Its caption would probably be "Header1", not your caption, because it's the default header.