Изменение модального статуса формы
Вы не можете изменить статус формы с не-модального на модальный без ее закрытия и повторного открытия.
Тем не менее, вы можете достигнуть этой цели, блокируя (disabling) все остальные открытые формы. Следующий пример переключает модальный статус формы в зависимости от нахождения таблицы в режиме редактирования:
 procedure TForm2.DataSource1StateChange(Sender:  TObject); var ix: integer; b: boolean; begin with (Sender as TDataSource).DataSet do b :=  (State = dsBrowse); with Screen do for ix := 0 to FormCount-1 do if Forms[ix] <> ActiveForm then Forms[ix].Enabled  := b; end; 
Примечание: вам также потребуется предотвращение закрытия формы, пока таблица находится в режиме редактирования (через обработчик события OnCloseQuery).
