Jam, lo que ocurre es que en el evento ONchange, estas cambiando la propiedad text, por eso el cursor se te vuelve al inicio. No uses la funcion "solo palabra", directamente escribe el código de darkpale en el evento KeyPress.
Si por cualquier motivo deseas usar la funcion solopalabra, entonces haz esto:
Código Delphi
[-]
function SoloPalabra(Texto : String) : String;
var
i:Integer;
begin
for i := 1 to Length(Texto) do
if not( Texto[i] in ['0'..'9']) then
Result := result + Texto[i] ;
end;
procedure TForm1.Edit10Change(Sender: TObject);
begin
Edit10.Text:=SoloPalabra(Edit10.Text);
edit10.Selstart := length(edit10.text);
edit10.SelLength := 0;
end;
La ventaja de usar el evento change, es que tambien validará el texto pegado desde el portapapeles, usando keyPress, no se validará.
Saludos