Função para Caixa Mista no Delphi

function CaixaMista (mNome: string): string;
var
tam,pos1,pos2 : integer ;
pal : string;
begin
tam := Length(mNome);
mNome := TrimRight(mNome) + ;
mNome := AnsiUpperCase(mNome);
while True do
begin
pos1:=POS( , mNome) ;
if pos1 = 0 then
break;
pal := Copy(mNome,1,pos1) ;
pos2 := pos(pal, DA - DAS - DE - DO - DOS );
If pos2 > 0 then
pal :=AnsiLowerCase (pal)
else
pal:=Copy(pal,1,1) + AnsiLowerCase(Copy(pal,2,tam)) ;
result := result + pal ;
mNome := copy(mNome,pos1+1,tam)
end;
end;
 

Exemplo:

Coloque este comando no evento de saida de foco de um edit
Edit1.Text :=CaixaMista(Edit1.Text) ;
 

DIGITANDO ASSIM: JOSÉ JORNANDO DE CARVALHO JÚNIOR
Ficará Assim:  José Jornando de Carvalho Júnior.