Изменение модального статуса формы
|
П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).
|