Here's your solution, or as least this is how I fixed the same issue.

Place this in the Global Code programming event:
//=====================================================================================
// Interactive Initial Caps - Basic code from Ray Yoxall, interactive by Carl Underwood
SUBROUTINE cuInitialCaps()
Var vStr as String
Var vFirst as Char
Var vSnipet as String
Var vCnt as Int
Var vPos as Int
vCnt = 0
vStr = ThisElement
If @Len(vStr) > 0
{
vPos = @CursorPosition(ThisElement)
// vStr = ToLower(vStr)
// Removal of the previous line allows you to force caps in the middle of a word or name.
// Examples: MacDonald, McBride, StOnge, PO Box, etc.
// Put it back in if you want to only allow the 1st letters to be in caps.
vFirst = @Left(vStr, 1)
vStr = @ReplFir(vStr, vFirst, ToUpper(vFirst))
While vCnt < @Len(vStr)
{
If @Mid(vStr, vCnt, 1) = " "
{
vSnipet = vSnipet + @Left(vStr, vCnt)
vStr = @Del(vStr, 0, vCnt)
vCnt = 0
vFirst = @Left(vStr, 1)
vStr = @ReplFir(vStr, vFirst, ToUpper(vFirst))
}
vCnt = vCnt + 1
}
vSnipet = vSnipet + vStr
ThisElement = vSnipet
CursorPosition(ThisElement, vPos)
}
END SUBROUTINE
//=====================================================================================
Then place this in the "On Element Immediate Change" event for the element (field) that you want to use it in:
cuInitialCaps()
Here's how it works. As you type, the first character will automatically be in upper case, but you must manually press the shift key when entering the "D" in McDougal or McDaniel, etc.