Time edit grid column for cCJGrid

From DataFlex Wiki
Jump to navigationJump to search

Author and origin

This example code was written by Raveen Sundram and comes from the following post at the forum:

https://support.dataaccess.com/Forums/showthread.php?63897-cCJGridColumnTimeEdit-anyone&p=341600#post341600

The need for a cCJGridColumnEdit class

We want to create a cCJGridColumnEdit class that uses the Windows CommonCtrl called 'ICC_DATE_CLASSES' for time based input.

Time based input using the standard forms/columnedits just do not work well.

Example:

    Object oCJOpenTimeColumn is a cCJGridColumn
      Set piWidth to 159
      Set psCaption to "Open"
      Set peDataType to Mask_Time
      Set psMask to "h:mm tt"
      Set phcEditClass to (RefClass(cCJGridColumnTimeEdit)) 
    End_Object

We have been using custom (db)TimeForms courtesy of the cWindowsEx project

See TimeForm.png


Extend cDataTimePick.pkg

Found that cDateTimePick.pkg, from the cWindowsEx project, was missing the following:

        Set External_Message WM_SETFOCUS        to External_SetFocus
        Set External_Message WM_KILLFOCUS       to External_KillFocus

cCJGridColumnTimeEdit

With that the cCJGridColumnTimeEdit now works.

Use cCJGridColumnEdit.pkg           
Use cDateTimePick.pkg // from cWindowEx Project


Class cCJGridColumnTimeEdit is a cCJGridColumnEdit


  Procedure Construct_Object
    Forward Send Construct_Object
    Send Define_DateTimePick_Mixin
    
    Set pbShowNone   to False
    
    Set pbUpDown     to True
    Set pbTimeFormat to True
    Set pbRightAlign to True      
    Set FontWeight to FW_NORMAL
  End_Procedure // Construct_Object
  
  Import_Class_Protocol DateTimePick_Mixin


  Procedure End_Construct_Object
    Forward Send End_Construct_Object
    Send InitCommonControlsEx ICC_DATE_CLASSES
  End_Procedure // Construct_Object


  Function Form_Window_Handle Integer iItem Returns Handle
    Handle hWnd
    Forward Get Form_Window_Handle iItem to hWnd
    If (hWnd=0) Get Window_Handle to hWnd
    Function_Return hWnd
  End_Function
  
  Procedure Set Value Integer iItem String sValue
    Forward Set value item iItem to sValue
    Send SetDateTimePickValue sValue
  End_Procedure
  
  Function Value Returns String
    String sValue
    Forward Get value to sValue
    If (Window_Handle(Self)) Get GetDateTimePickValue to sValue
    Function_Return sValue
  End_Function
  
  Procedure Set Form_Mask Integer iItem String sMask
    Move (Replace("ap",sMask,"tt")) to sMask
    Set psFormMask to sMask
  End_Procedure
  
  Function Form_Mask Integer iItem Returns String
    String sMask
    Get psFormMask to sMask
    Function_Return sMask
  End_Function
  
  Function Status_Help Integer iItem Returns String
    String sHelp
    Integer iItm
    If (Num_Arguments>0) Move iItem to iItm
    Forward Get Status_Help iItm to sHelp
    Function_Return sHelp
  End_Function
  
End_Class