Формулярите за кандидатстване могат да бъдат модални или немодални
Основната характеристика на модалната форма е, че спира изпълнението на процедурата, която я е извикала, докато потребителят не я затвори. В допълнение, модалната форма не позволява на потребителя да превключва фокуса на курсора на мишката към други форми в приложението, докато модалната форма не бъде затворена. В резултат на това потребителят трябва да извърши определени действия, предлагани от модалната форма, преди да може да продължи да работи с приложението.
Като модал могат да действат формуляри от типа AboutBox, различни директории и др. Разработчикът на приложението, в зависимост от задачите, които формата трябва да реши, трябва да определи дали тя ще бъде модална или немодална.
Нека разгледаме по-отблизо модалната форма.
Поведението на модална форма се определя от нейното основно свойство ModalResult, което е достъпно само по време на изпълнение. Когато формулярът се отвори чрез метода ShowModal, свойството ModalResult=0. Веднага щом свойството ModalResult бъде зададено на положително цяло число (в зависимост от версията на C++Builder) от 1 до 8 (за версия 5) и до 10 (за версия 6) в резултат на всякакви конкретни събития във формуляра, на свойството ModalResult ще бъде присвоена положително цяло число, модалната форма ще се затвори и потребителят ще продължи да работи с приложението. Числените стойности и съответстващите им константи могат да бъдат намерени във вградената помощ на C++ Builder.
За да използвате модална форма, се създава следната конструкция:
Използването на блока try/__finally гарантира, че кодът е защитен, когато възникне изключение, т.е. в случай на изключение формулярът ще бъде изтрит.
Не използвайте код като:
Причина - ако възникне изключение между събитията за създаване и изтриване на формата, тогаватази форма никога няма да бъде изтрита. Освен това не използвайте метода Free(), за да изтриете обект на VCL библиотека. По-добре е да използвате метода delete, който гарантирано ще извика деструктора на обекта и ще освободи паметта, разпределена от оператора new.