2) Anteriormente se trató algo parecido, pero no encuentro el hilo. Por ahora he hecho esto (se puede mejorar).
Código Delphi
[-]var
n:integer;
Cadena:string;
begin
Cadena:=edt1.Text;
n:=Length(Cadena);
if (n=0) or (cadena[n]=' ') then
key:=UpCase(key)