скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

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



Автор: 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).






Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook