Pues dinos qué error te da que no podemos adivinarlo. En cuanto a lo de impedir que se cierre la ventana tienes que usar el evento OnCloseQuery. Éste te sirve para validar si puedes o no cerrar el formulario haciendo las verificaciones que sean pertinentes. Si por alguna razón debes impedir que se cierre, bastará que pongas CanClose := false y coloques tú misma el foco en el control deseado. Por ejemplo:
Código Delphi
[-]
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
if Trim(Edit1.Text) = '' then
begin
CanClose := false;
Edit1.SetFocus;
end;
end;
// Saludos