Self, owner y sender son cosas diferentes.
Sender es el objeto que llama al evento
Self es un "auto-llamado" a la instancia que implementa de la clase.
Owner es el dueño de ese objeto, es quien se encargará de eliminar el objeto, si es que no lo eliminamos.
Un ejemplo, tengo un formulario frmPrincipal del tipo MDI que crea un frmCarga, y este último tiene un botón llamado btnAccion. En nuestro código frmPrincipal es el Owner de frmCarga:
Código:
TfrmPrincipal.mnuCargaOnClick(Sender: TObject);
begin
TfrmCarga.Create(Self); { Crea frmCarga asignando la instancia
instancia de frmPrincipal como Owner}
end;
En el click del botón tenemos:
Código:
TfrmCarga.btnAccionOnClick(Sender: TObject);
begin
if Sender = btnAccion Then
TForm(Self).Caption := 'Hola!' { Le asigna al caption del TfrmCarga,
que e a quien pertenece el método
btnAccionOnClick, el texo 'Hola!' }
else if Sender = btnSalir Then
TForm(Owner).Caption := 'Salir!!' { Le asigna el Dueño (TfrmPrincipal)
el texto Salir'}
else
Caption := 'Chau!'; {Aca podemos ver como el Self siempre está implísito}
end;
Espero haber sido claro, igualmente te recomiendo leer la ayuda que es muy clara.
Saludos!