Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Программирование на Delphi. От новичка до профессионала! 15.3 Включение в проект форм


Информационный Канал Subscribe.Ru


Партнёрская программа от www.hostingsystem.ru, выплаты 40% от заказа. Качественный хостинг для вашего сайта. Подробнее...

 

15.3 Включение в проект форм


1. Зачем надо включать в проект новые формы
Во многих случаях ваш проект будет содержать не одну, а несколько форм. Кроме того, вы, может быть, захотите убрать из нового проекта пустую форму и включить вместо нее другую, разработанную ранее вами или кем-то другим. Например, если вы для какого-то своего проекта разработали форму, запрашивающую пароль пользователя, или форму с информацией о программе и вашим красивым логотипом, то не имеет смысла в новом проекте создавать их заново. Форму с паролем вы могли бы взять из прошлого приложения вообще без каких-либо изменений, а в форме информации о программе вам достаточно сменить только имя программы.

Для всех, включаемых в проект форм, даже если в вашем проекте всего одна форма, задавайте уникальные имена (свойство Name), изменяя установленные Delphi по умолчанию. Это существенно облегчит вам повторное использование ваших форм, так как позволит избежать дублирование имен при включении прежней формы в новый проект.

2. Включение в проект новой формы

Включение в проект новой формы может производиться различными способами. Если вы хотите включить новую пустую форму, вам достаточно выполнить команду File | New | Form или нажать соответствующую быструю кнопку.

Теперь рассмотрим случай, когда вам требуется включить в свой проект форму, разработанную ранее вами или кем-то еще для другого проекта. Тут возможны несколько вариантов действий, имеющих различные последствия.

Можно включить готовую форму в проект командой Project | Add to Project или соответствующей быстрой кнопкой. При этом, если включаемая форма имеет то же имя, которое имеет одна из уже имеющихся в проекте форм (например, Form1, если вы не привыкли изменять имена форм, принимаемые Delphi по умолчанию), то вы получите предупреждение вида: "The project already contains a form or module named Form1" — "Проект уже содержит форму или модуль с именем Form1". В результате форма откроется, но в проект не включится. Аналогичный вариант будет, если вы не следуете в своей работе уже дававшемуся совету присваивать модулям уникальные имена. Если в проекте уже имеется модуль Unit1 и вы пытаетесь включить из другого каталога модуль формы, тоже имеющий имя Unit1, то вам будет выдано то же предупреждение, новый модуль загрузится, но в проект не включится.

Разрешить подобный конфликт можно следующим образом. Перейдите в окно Редактора Кода в открывшийся, но не включенный в проект модуль. Щелкните правой кнопкой мыши и во всплывшем меню выберите команду Close Page. Модуль закроется. После этого переименуйте в вашем проекте форму, вызвавшую конфликт (задайте для нее новое имя в свойстве Name). Если конфликт вызвав совпадением имен модулей, то сохраните конфликтующий модуль командой File | Save As, дав ему новое имя. После этого можете повторить попытку добавление в проект новой формы.

Учтите, что форма, содержащаяся в одном приложении и включенная описанным способе в другое приложение, становится общей для обоих приложений. Если вы сделаете в ней какие-то изменения, а потом перекомпилируете оба приложения, то внесенные изменения изменения отразятся на обоих приложениях.

Введенное описанными действиями совместное владение несколькими приложениями одной и той же формой имеет свои плюсы и минусы. Если эти приложения представляют собой некую группу связанных друг с другом приложений, рассчитанных на применение одними и теми же пользователями, то наличие общих форм можно только приветствовать. Какие-то усовершенствования, введенные в подобной форме, согласованно отобразятся во всех использующих ее приложениях (после их перекомпиляции). Например, если это форма, запрашивающая пароль пользователя, то, конечно, хорошо, если она будет общей (и значит идентичной) в различных приложениях.

Если же приложения, совместно использующие форму, совершенно разные или форма используется в них для разных целей, то, введя изменения в форму в одном приложении, вы рискуете испортить прежнее приложение, если соберетесь его перекомпилировать. Например, изменив имя программы в форме, описывающей новое приложение, вы невольно введете то же имя и в прежнее приложение, что будет, несомненно, ошибкой.

3. Создание отдельной копии формы

Чтобы избежать совместного владения формой несколькими приложениями после того, как вы включили в новое приложение форму из другого приложения перейдите в окно Редактора Кода в модуль этой формы и выполните команду File | Save As, сохранив модуль в каталоге нового приложения и, если хотите, под другим именем (имя изменять не обязательно). В этом случае разные приложения будут использовать совершенно разные копии одной формы и изменения одной из них не затронут другие приложения.

Можно, конечно, создать копию формы и другими способами. Во-первых, вы можете создать ее средствами Windows или MS-DOS, просто скопировав соответствующие файлы из одного каталога в другой. Только не забудьте при этом, что форма — это не только файл модуля .pas, но еще и файл ее изображения .dfm. Так что копировать надо оба файла. Файл объектного модуля .dcu можно не копировать | так как он будет создан Delphi в процессе компиляции.

Еще один способ создания автономной копии формы — использование меню Delphi. Вы можете в любой момент последовательно выполнить команды File | Open, указав файл открываемой формы, и команду File | Save As. Первая из этих команд откроет форму, а вторая сохранит ее в указанном вами каталоге под указанным именем. Преимущество такой операции заключается в том, что вам не нужно думать о совокупности сохраняемых файлов. Delphi автоматически скопирует не только файл .pas, но и файл .dfm.

4. Заимствование форм из Депозитария
В Delphi имеется еще одна возможность — заимствование включаемой в проект формы из Депозитария. Для этого надо выполнить команду File | New | Other (в версиях, младше Delphi 6 — команду File | New), после которой откроется окно New Items (новые элементы), уже обсуждавшееся ранее. На странице Forms вы найдете ряд форм, которые можете заимствовать для своего проекта.

Форма заимствования определяется тремя радиокнопками, размещенными в нижней части окна: Сору — копировать, Inherit — наследовать, Use — использовать. Если включена кнопка Сору, то файлы формы просто будут скопированы в ваше приложение. При этом никакой дальнейшей связи между исходной формой и копией не будет. Вы можете спокойно изменять свойства вашей копии и это никак отразится на форме, хранящейся в Депозитарии. Именно этот режим надо использовать, если вы хотите перенести в свой проект одну из форм, включенных в Депозитарий создателями Delphi.

Советую посмотреть формы, имеющиеся в Депозитарии, перенеся их в свой новый проект. Вы сможете увидеть там приемы построения форм, которые помогут вам в различных разработках. Но повторю то, что говорилось ранее: заготовки Borland полезно посмотреть и изучить, но формы для своего приложения лучше разрабатывать самим.

5. Просмотр форм и модулей без включения их в проект

Нередко у вас может возникнуть потребность в процессе работы над проектом посмотреть формы и методы из других проектов. Это могут быть формы примеров, поставляемых с Delphi. Или могут быть ранее разработанные вами формы, из которых вы хотите взять какие-то операторы, решающие задачу близкую к той, которой вы заняты в данных момент.

Открыть некоторый существующий модуль, не включая его в текущий проект очень легко. Достаточно выполнить команду File | Open, и указанный вами файл модуля окажется в окне Редактора Кода. Вы можете просматривать его и сопутствующую ему форму, копировать через буфер обмена Clipboard какие-то операторы в свои модули.

Когда необходимость в открытом модуле отпадет, щелкните на его коде правой кнопкой мыши и из всплывшего меню выберите команду Close Page. Страница Редактора Кода с текстом данного модуля и его форма будут закрыты. Аналогичным образом в окне Редактора Кода можно просматривать текстовые файлы и файлы HTML.


 

 

Сайт рассылки http://mydelphi7.narod.ru, на котором есть архив рассылки, также гостевая книга, переводчик.

Копировать, размещать, продавать представленную информацию запрещается.



http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное