на второй вопрос:
Код:
u:=MessageDlg('Удалить проект '+Table1.FieldByName('...').AsSTring + '?',mtCustom,[mbYes,mbNo],0);
На первый вопрос. Если база - СУБД (MS SQL, Oracle, Interbase, etc), то действительно можно применять каскадное удаление.Тогда БД сама по ключам удалит нужные записи.
Если БД локальная (типа Paradox, dBase), то придется удалять руками. Т.е. из главной таблицы запоминаешь уникальный id записи, удаляешь из подчиненных таблиц записи с соотв. значением, указывающем на главную запись и в конце удаляешь соотв. запись из главной таблицы.