Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Form.Show и Form.ShowModal - разница?


Автор: Diver 21.3.2005, 23:25
Для отображение скрытых форм можно использовать два способа: Form.Show и Form.ShowModal.

Вопрос: Какая между ними разница и что лучше?

Автор: Satana 21.3.2005, 23:36
Если использовать ShowModal то пока ты не закроешь отображаемую форму не сможешь перейти к главной, если используешь Show то можно переключаться между окнами.

Автор: drinkOut 21.3.2005, 23:37
Когда ты исподьзуешь метод ShowModal, то вызванная форма становится модальной, т.е. нельзя получить доступ к другим формам приложения, пока эта вызванная форма не закрыта.

Трудно дать ответ на твой вопрос "Что лучше?"... Надо просто посмотреть, что лучше подходит под конкретную ситуацию. smile
Добавлено @ 23:40
Satana, опередил...

Автор: FRAGNATIC 21.3.2005, 23:41
разница большая
когда т используеш ShowModal то тогда программа приостонавливает своё выполнение и ты мож работать ток с той формой которую ты так показал а к главной форме ты не сможеш получить доступ
дапустим
Код

var i: integer;
begin
form2.showmodal;
i:=10
end;

сдесь сначало покажется окно и программа будет ждать его закрытия и тока после его закрытия i присвоится значение 10
Код

var i: integer;
begin
form2.showl;
i:=10
end;

здесь покажется окно и моментально i присвоится значение 10 )
вообще если надо работать сразу с двумя окнами то лучше просто show если дапустим окно "о программе" то лучше showmodal + можно определит как было закрыто окно (если есть пару кнопок) то в модальном окне можно определить как было закрыто окно нажатием кнопки ОК или НО )
Добавлено @ 23:41
гы опередили оба(

Автор: SPrograMMer 21.3.2005, 23:44
Когда ты использушь просто Show, у тебя откроется новое окно, и ты сможешь "перепрыгивать" из одного окна во воторое безо всяких ограничений.
ShowModal немного другая штука. Она открывает новое окно модальным образом. Что это значит? А то что пока ты не расправишься с эти окном, то есть пока ты его не закроешь, к первому окну ты не вернешься. Как не пытайся.
Для примера, вспомни диалог сохранения или открытия файлов в многих программах. Ну так вот Щелкнул ты по кнопке окрыть, выскочило окно, и пока ты не выберешь файл и не скажешь "Окрыть" или "отменя", или закроешь окно "крестиком", к главному окну ты доступа не получишь.
Что лучше - решать тебе. ShowModal, обычно используется как раз в диалоговых окнах, когда нужно узнать что нажал пользователь, тогда удобна конструкция вида
Код

...
  case FormDialog.ShowModal Of
    mrOk: // пользователь нажал на Ok
    mrCancel: // на отмену
    mrNo: // на нет
    Else
       //закрыл окно другим способом
...

Естестно, в твоем диалоге в этом случае должны быть эти кнопки, я имею ввиду Ok, Cancel,Yes, No и др.
Добавлено @ 23:45
Млин, какие вы все быстрые...

Автор: FRAGNATIC 21.3.2005, 23:48
Цитата
Естестно, в твоем диалоге в этом случае должны быть эти кнопки, я имею ввиду Ok, Cancel,Yes, No и др

добавлю что кнопки должны быть с модальным результатом а это тип TBitBtn у каторой в свойстве modalresult указываеш ок или но и так далее)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)