Изменение модального статуса формы

{codecitation class=»brush: pascal; gutter: false;» width=»600px»}

Автор: Mike Orriss

Пpиходит программист в магазин. Там пpодавщица — полная такая тетенька. Программист (несколько оглядевшись):

— Бyтылкy пива и пачкy пpезеpвативов.

Продавщица:

— Это ты девyшкy охмypить бyтылкой пива собpался? Вино надо доpогое покyпать.

Программист (отpешенно):

— Да нет. Пиво я выпью, когда она yйдет.

Вы не можете изменить статус формы с не-модального на модальный без ее закрытия и повторного открытия.

Тем не менее, вы можете достигнуть этой цели, блокируя (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).

{/codecitation}

Добавить комментарий