Michael,

Here's some code that I used.
Code:
            // set the group row labels
            {MethodType=Event}
            Procedure OnProcessGroupRow Handle hoRow
                Handle hoRows
                String  sCaption
                String sDayCaption 
                
                Get ComGroupCaption of hoRow to sCaption
                Move (Trim(sCaption)) to sCaption  
                
                If (sCaption contains "Date") Begin
                    Move (Trim(Replace("Date: ",sCaption,""))) to sCaption        
                    Case Begin 
                        Case (sCaption=(Date(CurrentDateTime()))) 
                            Move 'Today' to sCaption
                            Case Break
                        Case (sCaption=((Date(CurrentDateTime()))-1) )
                            Move 'Yesterday' to sCaption
                            Case Break
                        Case Else
                            Move ("Date: " + sCaption) to sCaption
                    Case End
                End
                
                Set ComGroupCaption of hoRow to sCaption        
            End_Procedure 
            
            {MethodType=Event}
            Procedure OnProcessRow Handle hoRow 
            End_Procedure
           
            //Populate as normal but then process the rows so we can set the group row labels
            Procedure ComPopulate
                Forward Send ComPopulate
                Send DoProcessAllRows
            End_Procedure
           
            Procedure DoProcessAllRows
                Handle hoRows hoRow hoGroupRow
                Integer iRow iCount
                Variant vRow
                Boolean bIsGroupRow
                
                If (not(IsComObjectCreated(Self))) Begin
                    Procedure_Return
                End
                Get phoReportRow to hoRow
                Get phoReportGroupRow to hoGroupRow
                Get phoReportRows to hoRows
                Set pvComObject of hoRows to (ComRows(Self))
                Get ComCount of hoRows to iCount
                Subtract 1 from iCount
                For iRow from 0 to iCount
                    Get ComRow of hoRows iRow to vRow
                    Set pvComObject of hoRow to vRow
                    
                    Get ComGroupRow of hoRow to bIsGroupRow
                    If (bIsGroupRow) Begin
                        Set pvComObject of hoGroupRow to vRow
                        Send OnProcessGroupRow hoGroupRow
                    End
                    Else Begin
                        Send OnProcessRow hoRow 
                    End
                    //Have to re-get the count because we may have collapsed a row
                    Get ComCount of hoRows to iCount
                    Subtract 1 from iCount
                Loop     
            End_Procedure