PUBLIC oform1 oform1=NEWOBJECT("testForm") oform1.Show RETURN DEFINE CLASS testForm as form Caption = "edit only date of datetime" ADD OBJECT text1 AS textbox WITH ; Alignment = 3, ; Value = (DATETIME()), ; Height = 23, ; Left = 124, ; Top = 11, ; Width = 100, ; Name = "Text1" ADD OBJECT dtextbox1 AS dtextbox WITH ; Left = 14, ; Top = 11, ; mycontrolsource = "M.THISFORM.TEXT1.VALUE", ; Name = "Dtextbox1" ADD OBJECT grid1 AS myGrid WITH ; Height = 181, ; Left = 14, ; Top = 47, ; RecordSource = "dateCursor", ; Column1.Bound = .F., ; Column1.Width = 203, ; Column1.Sparse = .F., ; Column1.Name = "Column1", ; Column1.header1.Alignment = 2, ; Column1.header1.Caption = "date in datetime", ; Column1.cltext.myControlsource = "dateCursor.tField" PROCEDURE Load CREATE CURSOR dateCursor ( tField T) FOR I = 1 TO 10 INSERT INTO dateCursor VALUES (DATETIME()+RAND()*1000) ENDFOR GO TOP ENDPROC ENDDEFINE DEFINE CLASS myGrid AS grid ADD OBJECT Column1 AS myColumn ENDDEFINE DEFINE CLASS myColumn AS Column ADD OBJECT header1 as header ADD OBJECT cltext AS dtextbox ENDDEFINE ** TEXTBOX CLASS FOR EDIT THE DATE PART OF A DATETIME FIELD ** DEFINE CLASS dtextbox AS textbox ControlSource = "m.this._Controlsource" HIDDEN ControlSource NullDisplay = "< undefined >" MyControlSource = "NULL" _ControlSource = {} HIDDEN PROCEDURE _ControlSource_Access RETURN TTOD(EVALUATE(m.this.MyControlSource)) ENDPROC HIDDEN PROCEDURE _ControlSource_Assign LPARAMETERS dValue IF m.this.MyControlSource="M." && a variable or properties STORE DTOT(m.dValue) TO (m.this.MyControlSource) ELSE REPLACE (m.this.MyControlSource) WITH DTOT(m.dValue) ENDIF ENDPROC HIDDEN PROCEDURE MyControlSource_Assign LPARAMETERS sControlSource IF TYPE("m.sControlSource")=="T" && this skip bad source THIS.MyControlSource = UPPER(m.sControlSource) ENDIF ENDPROC ENDDEFINE