Hola rufo.
Como te dijo
Delphius, con otros componentes la taréa se simplifica muchísimo...
Usando edits, vas a tener que realizar varias comprobaciones para que sea realmente operativo (nunca se sabe que ingresará el usuario).
Básicamente es la idea que te ya te dió mi amigo

: Comparar la cadena ingresada en Edit2 con los meses del año.
Te pongo una función que incluye la comprobación y acorto la comparación de meses aprovechando la variable
LongMonthNames, pero los nombres de los meses dependerán de la configuración regional. Y si no estas seguro cuál tendrá el S.O, es mejor que utilices una solución como la que te sugirió
Caral.
Código Delphi
[-]
function ComponeFecha(Dia, Mes, Anio: string): string;
{$J+}
const DM: array[1..12] of Byte=(31,28,31,30,31,30,31,31,30,31,30,31);
{$J-}
var
m,d,a: Integer;
v: array of string;
begin
DM[2]:= 28;
SetLength(v, 12);
for m := 0 to 11 do v[m] := UpperCase(LongMonthNames[m+1]);
m := AnsiIndexStr(UpperCase(mes), v) + 1;
if TryStrToInt(Dia, d) and (m > 0) and TryStrToInt(Anio,a) then
begin
if (((a mod 4) = 0)and((a mod 100) <> 0)or(a mod 400 = 0)) then Inc(DM[2]);
if d in [1..DM[m]] then
Result := StringOfChar('0', 2-Length(Dia)) + Dia + '/' +
StringOfChar('0', 2-Length(IntToStr(m))) + IntToStr(m) + '/' + Anio;
end;
end;
Llamada:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(ComponeFecha(Edit1.Text, Edit2.Text, Edit3.Text));
end;
Saludos.