Hola Jheysson13, el problema es sencillo. Estas comparando texto y no números, cuando tu comparas:
Código Delphi
[-]
if (fecha2.Caption>'8')then begin
si fecha2.caption vale '10' la comparación devuelve FALSE porque la cadena de texto '10' es menor que la cadena de texto '8', ya que cuando se compara texto se realiza carácter a carácter, es decir es mayor el que tiene el primer carácter mayor.