Aqui se complica un poco la cosa, por ejemplo hay apellidos como "De la Rosa", o personas con más de un nombre, que obviamente no son una palabra, por lo tanto hice lo siguiente:
En lugar de que selecciones palabra por palabra, lo que vamos ha hacer es que en una variable se guarde el texto como lo seleccionemos, es decir, si alguien tiene dos nombres o apellidos compuestos lo guardaremos y lo almacenaremos según lo seleccionemos, a continuación te muestro el código
Delcaramos en el apartod private la siguiente variable
palabras:array of string;
Agregamos un edit
en el evento OnKeyDown del edit ponemos
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if key=VK_ADD then begin
SetLength(palabras,length(palabras)+1);
palabras[Length(palabras)-1]:=Edit1.SelText;
end else if key=VK_SUBTRACT then
SetLength(palabras,0);
end;
El código de arriba hace lo siguiente: dentro de una variable array en su primer elemento pondrá el texto que esté seleccionado dentro del edit, al hacerlo por segunda ves lo hará en su elemnto numero 2 y asi sucesivamente. Entonces lo que hay que hacer es seleccionar el o los nombres y presionar la tecla '+' luego seleccionamos el apellido paterno y presionamos de nuevo '+' y lo mismo con el materno, hecho esto tenemos el nombre separado correctamente, si así lo hicimos, ahora solo queda asignarlo a los edits correspondientes, se debe presionar la tecla '-' antes de hacerlo con otro nombre ya que si no lo hacemos los datos anteriores aún estarán almacenados.
si quieres hacerlo de forma automática se requiere de muchas validaciones de como estan compuestos lo nombres y llevaría algo de tiempo hacerlo.
En el evento OnKeyPress ponemos
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if key in ['+','-'] then
key:=#0;
end;
Y por último en un botón ponemos
procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.text:=palabras[0];
Edit2.text:=palabras[1];
Edit3.text:=palabras[2];
end;