Delphi как открыть файл dfm в виде формы исходник
Delphi site: daily Delphi-news, documentation, articles, review, interview, computer humor.
Каждый модуль, который содержит визуальную форму, состоит из двух файлов со следующими расширениями:
.dfm - описание визуального содержимого формы (объекты, их свойства и расположение).
Проблема решается очень просто. Необходимо просто вручную отключить соединение с базой, а это делается редактированием в текстовом редакторе (например, в блокноте) dfm-файла.
В листинге 2.1 я показал пример простого dl'm-файла, в котором описана форма, содержащая два компонента - TRichEdit (поле ввода) и TButton (кнопка). Давайте рассмотрим формат файла на примере этого листинга.
Листинг 2.1. Содержимое dfm-файла
object Forml: TForml Left - О Top = О Width = 394 Height - 284
Листинг 2.1 (продолжение) Тор = 224 Width = 75 Height = 25 Caption = 'OK' Modal Result = 1 TabOrder = 0 end end Первая строка этого dfm-файла, начинающая описание объекта, выглядит так: object Forml; TForml
После строки с ключевым словом object идет описание объекта, которое заканчивается, когда анализатор встречает слово end. Таким образом, полный вид описания объекта выглядит следующим образом:
object имя : тип
Описание end Никаких точек с запятыми быть не должно.
Объекты могут быть вложенными. Например, в следующем примере кнопка вложена в форму, то есть кнопка в дизайнере располагается на форме:
object Forml : TForm Описание
object Buttonl : TButton Описание end end Как видите, ничего сложного тут нет. Неудобно? Да. С помощью дизайнера создавать формы намного проще.
Теперь посмотрим на описание. Оно еще проще, потому что содержит всего лишь строки в виде:
В следующем примере в описании только одна строка, которая задает левую позицию кнопки объекта:
object Buttonl . TButton Left = О
end Все остальные значения по умолчанию задаются конструктором этого объекта. Таким образом, если какому-то свойству нужно присвоить значение по умолчанию, достаточно удалить его описание в dfm-файле.
Вы можете создавать и изменять свойства вручную. Имена свойств (их нужно писать слева) представляют собой те же имена, которые вы видите в объектном инспекторе или в разделе Properties файла помощи по объекту.
Значение зависит от типа. Если свойство числовое, то ему можно присвоить число. А вот со строками немного сложнее, потому что русский язык записывается в кодировке Unicode, чтобы проект был совместим с Kylix (ОС Linux). Английский текст пишется в простых одинарных кавычках, а русский - вне кавычек и с кодированием. Например:
Теперь посмотрігм. как можно решить проблему открытия модуля, в котором компоненты ADO связаны с несуществующей базой данных. Если вы использовали компонент ADOConnection, то сначала ищем его объявление:
Top = 16 end В первой строке описания свойству Connected присваивается значение Тгие. Просто изменяем его на False в любом текстовом редакторе, и готово. После этого ищем все описания объектов TADOTable и TADOQuery и у них вручную присваиваем свойству Active значение False.
После этого среда разработки Delphi сможет открыть проект, не пытаясь соединиться с базой данных.
Помните, с чего вы начинали знакомство со средой Delphi? Конечно, с формы. Итак, первая составная часть проекта - это текстовый файл с расширением DFM, описывающий форму. В DFM-файле сохраняются значения свойств формы и ее компонентов, установленные вами в окне свойств во время проектирования приложения. Количество DFM-файлов равно количеству используемых в приложении форм. Например, в нашем примере об идеальном весе используется только одна форма, поэтому и DFM-файл только один - Unit1.DFM.
Если вы желаете взглянуть на содержимое DFM-файла, вызовите у формы контекстное меню щелчком правой кнопки мыши и выберите команду View as Text (рисунок 7.2).
Рисунок 7.2. Переход к текстовому представлению формы с помощью команды View as Text контекстного меню
В ответ среда Delphi вместо графического изображения формы покажет следующий текст в редакторе кода:
Несмотря на столь длинный текст описания, разобраться в нем совсем не сложно. Здесь на специальном языке задаются исходные значения для свойств формы Form1 и ее компонентов Button1, Button2, Edit1, Edit2, Label1, Label2. Большего знать не требуется, поскольку вы всегда будете использовать визуальные средства проектирования и работать с графическим представлением формы, а не с текстовым описанием. Раз так, давайте поспешим вернуться к графическому представлению, не внося в текст никаких изменений. Для этого вызовите контекстное меню редактора кода и выберите команду View as Form (рисунок 7.3).
Рисунок 7.3. Переход к графическому представлению формы с помощью команды View as Form контекстного меню
На экране снова появится графический образ формы. Если вы все-таки внесли корректировки в текст, то они отразятся на внешнем виде формы.
Файл описания формы (DFM-файл) нужен только на этапе проектирования. При сборке приложения описание формы из DFM-файла помещается в специальную область данных выполняемого файла (область ресурсов). Когда во время работы приложения происходит создание формы, ее описание извлекается из области ресурсов и используется для инициализации формы и ее компонентов. В результате форма отображается на экране так, как вы задали при проектировании.
В каком виде сохраняются созданные программы? Этот вопрос возникает у любого начинающего программиста. Эта тема заслуживает отдельного внимания. Как известно, в Windows любая программа представляет собой exe-файл, который является исполняемым, т.е. может быть запущен как отдельное приложение. Понятно, что разрабатывая программу, в итоге нужно получить именно exe-файл, чтобы его можно было запустить на компьютере, где не установлена среда, в которой эта программа была создана. В языках программирования для DOS, в частности Turbo Pascal, всё довольно просто - весь программный код сохраняется в один-единственный файл, а в итоге получается exe-файл. Довольно просто и удобно. При переходе в Windows всё становится гораздо сложнее. Оконное приложение Windows не может быть сохранено в одном файле. Если в среде DOS программы можно называть именно программами, то в объектно-ориентированном программировании они называются проектами. Почему проектами? Всё достаточно просто - программа представляет собой совокупность некоторого числа файлов различного типа, определённым образом связанных между собой. Очевидно, что всю эту группу логично назвать проектом.
В этой статье мы познакомимся с самыми основными типами файлов, которые включены в любой проект, созданный на Delphi. На самом деле типов файлов гораздо больше, но эти - базовые.
*.dpr - файл проекта
Это главный файл всего проекта. Если этот файл отсутствует, запустить программу будет невозможно. В файле хранятся все основные параметры приложения, а также информация об окнах, которые в приложение включены. Файл представляет собой свободно читаемый код. Посмотреть содержимое этого файла можно командой меню Project -> View Source. В более новых версиях Delphi файл проекта имеет другое расширение - .bdsproj (в Borland Developer Studio 2006), .dproj (в Delphi 2007 и далее). Обратная совместимость поддерживается.
*.dfm - файл описания формы
В этом файле содержится описание всех объектов, которые расположены на форме, а также информация обо всех их свойствах. При этом в этот файл сохраняются только те свойства объектов, которые были принудительно изменены. Это объясняется тем, что все свойства любого объекта имеют значения по умолчанию (т.е. заранее установленные). Соответственно нет смысла хранить значения абсолютно всех свойств - достаточно запомнить только те, которые имеют значение, отлиное от начального. Все остальные свойства принимают своё исходное значение и таким образом вся форма восстанавливается.
*.pas - модуль (самостоятельный, либо модуль формы)
Именно этот файл больше всего похож на файл программ Turbo Pascal. В этом файле находится код программы. Модули могут быть отдельными от конкретных проектов - в этом случае их можно подключить к любому проекту и использовать. Как правило, в отдельных модулях находятся вспомогательные функции, либо какие-либо объекты. Помимо этого модуль есть у каждой формы. В результате *.pas-файл неразрывно связан с файлом *.dfm, а форма соответственно описывается этими двумя файлами - один содержит её состояние и объекты, а второй - код программы, относящийся к этой форме. Следует отметить, что модули значительно облегчают процесс написания программы и ориентацию в больших модулях - отдельные элементы большого модуля можно вынести в несколько модулей и просто подключить их к проекту.
*.res - файл ресурсов
Это дополнительный файл. В нём находятся данные различных типов - это могут быть тексты, изображения, звуки и т.д. К примеру, для проекта этот файл создаётся автоматически и в нём сохраняется иконка (значок) приложения, а также некоторая информация о проекте.
*.dof, *.cfg - файлы конфигурации проекта
В этих файлах хранятся опции текущего проекта (которые настраиваются в окне Project - Options). При отсутствии этих файлов будут использоваться стандартные параметры.
*.dcu, *.obj - объектные файлы
Эти файлы представляют собой уже скомпилированные модули. При очередной компиляции Delphi создаёт для каждого pas-файла соответствующий dcu-файл. Это существенно ускоряет компиляцию в дальнейшем, т.к. имеющиеся файлы просто включаются в конечный exe-файл, а не обрабатываются заново. OBJ-файлы - это тоже скомпилированные модули, но применяющиеся в С++. При работе в Delphi эти файлы не используются, но при необходимости их можно сформировать.
Файлы, расширение которых начинается со знака тильды ("
"), являются временными. Это означает, что они не несут какой-либо важной информации и используются в других целях (например, для ускорения компиляции). Эти файлы можно смело удалять, если они мешают. Чем больше проект, тем обычно больше появляется временных файлов.
Работа с проектом
Ну а теперь пришло время рассказать о базовых операциях с проектом, так как ранее речь об этом не шла. Рассмотрим всё по порядку.
Создание нового проекта
Для создания "чистого листа" следует выбрать в меню File -> New -> Application. В разных версиях Delphi содержимое подменю New может немного отличаться, но всё основное присутствует всегда. После этого создаётся новый проект, такой, какой появляется при запуске Delphi.
Открытие существующего проекта (или файла)
Для этого существует команда File -> Open. Выбрав файл *.dpr, откроется проект, а выбрав какой-либо другой файл (например, *.pas или *.dfm) откроется что-либо другое (например, отдельная форма).
Сохранение
С сохранением есть несколько тонкостей. Исходя из того, что проект представляет собой совокупность нескольких файлов, можно сделать вывод, что сохранять нужно все эти файлы, а не какой-то в отдельности. Выбрав File -> Save, Вы сохраните только текущую форму, но не более того, а проект останется "висеть в воздухе". File -> Save As. - стандартный пункт, который делает то же самое, что и Save, только позволяет пересохранить файл (форму) под другим именем. Команда Save Project As. сохраняет файл проекта (*.dpr). Таким образом, чтобы сохранить проект полностью, нужно сохранить каждую из форм и сам проект. Делать это по отдельности достаточно неудобно, поэтому существует команда, облегчающая этот процесс: File -> Save All. При вызове этой команды сначала появится диалог для сохранения формы (если форм несколько, то и диалогов будет несколько), а затем диалог для сохранения проекта. После того, как все диалоги отработали, можно с уверенностью сказать, что проект сохранён полностью.
Меню File содержит все основные команды управления проектомЖелезное правило: каждый проект должен быть сохранён в отдельном каталоге!
Если в один каталог сохранить несколько проектов, то все файлы перемешаются и можно отправлять всё в корзину. Этого нельзя делать ни в коем случае!
Запуск и остановка программы
Теперь, когда проект сохранён, программу можно и запустить и посмотреть, что же получилось. Ещё одно правило, которое желательно соблюдать: перед запуском программы проект нужно сохранить. Мгновенный вопрос: зачем? Конечно, делать это или нет - решать Вам, но бывают случаи, когда программа зависает (по вине самого программиста например), а с ней зависает и оболочка Delphi. В этом случае ничего не остаётся делать, как "убивать" Delphi через Диспетчер задач Windows. Понятно, что изменения, которые были внесены в проект, теряются. Однако не всё так плохо. Случаи зависания Delphi IDE достаточно редки. Как правило, если программа зависает, Delphi позволяет её просто уничтожить из памяти и продолжить работу. Процесс сохранения проекта перед запуском можно поручить оболочке: меню Tools -> Environment Options. , вкладка Preferences, блок Autosave options - опция Editor files.
Запомните следующие основные горячие клавиши:
Ctrl+F9 - компиляция программы. Что такое компиляция? Говоря простым языком - создание выходного (exe) файла программы. Следует отметить, что имя выходного файла совпадает с именем проекта, т.е. именем *.dpr-файла и не может быть изменено. Выходной файл создаётся в том же каталоге, где расположение *.dpr-файл. Однако компиляция просто "собирает" всю программу, но не запускает её.
F9 - запуск. В отличие от компиляции, это уже полноценный запуск программы из оболочки Delphi, однако не совсем такой, каким является запуск приложения из Windows. Запуск происходит под отладчиком. Но об этом позже.
Ctrl+F2 - остановка выполнения программы. Это именно то, о чём сказано чуть выше. Если нужно экстренно завершить работу программы, нужно активировать какое=-либо из окон оболочки Delphi и нажать это сочетание клавиш. Программа будет остановлена и можно будет безболезненно продолжить работу.
Все эти команды доступны и напрямую из меню: Run -> Run, Project -> Compile, Run -> Program Reset.
Все основные команды управления проектом вынесены также в виде кнопок на панели инструментов:
Свойства проекта
Для проекта можно установить множество разнообразных параметров. Все они находятся в окне Project -> Options. В частности, на вкладке Application можно указать заголовок проекта, который будет отображаться на кнопке программы на панели задач. Совет: всегда прописывайте заголовок своей программе, не оставляйте стандартного "Project1" - это резко бросается в глаза. На этой же вкладке можно выбрать иконку (значок) для приложения - файл *.ico размером 32х32 пикселя. В блоке Output settings можно указать расширение выходного файла. Заполнять это поле не обязательно - по умолчанию файлу присваивается расширение .exe. Однако в некоторых случаях эта настройка бывает полезной. Например, экранные программы-заставки представляют собой те же исполняемые exe-файлы, только имеют расширение .scr. Неудобно каждый раз после внесения изменений в программу, чтобы протестировать заставку, переименовывать файл. А прописав в указанное поле "scr" проблема мигом решится.
Вкладка Application в окне свойств проекта влияет на внешний вид кнопки программы на панели задачЗаключение
В этой статье рассмотрены все базовые навыки для управления проектами. Теперь можно приступить непосредственно к изучению языка и исследованию объектов.
Автор: Ерёмин А.А.
Статья добавлена: 14 апреля 2007
Рейтинг статьи: 4.71 Голосов: 14 Ваша оценка:Зарегистрируйтесь/авторизируйтесь,
чтобы оценивать статьи.
Для вставки ссылки на данную статью на другом сайте используйте следующий HTML-код:
Ссылка для форумов (BBCode):
Поделитесь ссылкой в социальных сетях:
Комментарии читателей к данной статье
Пока нет комментариев к данной статье. Оставьте свой и он будет первым.
Данная заметка является продолжением предыдущей.
Вступительное слово
Я решил не писать отдельную статью. Вместо этого я буду проделывать задуманную работу по маленьким этапам, каждый из которых выкладывать в репозиторий на github.
Ещё я подумал, что если Вы всё ещё используете старые версии Delphi, то скорее всего, Вы их используете для поддержки существующих больших проектов. А потому, Вы врядли будете использовать мои исходники как есть. К тому же, у меня нет сейчас возможности дополнительно тестировать исходники на совместимость, поэтому я убрал директивы условной компиляции для разных версий Delphi.
Все исходники написаны в Delphi 2010, доступны для свободного скачивания и использования. Последняя версия доступна на этой странице, ссылка для быстрого скачивания.
Далее я буду ссылаться на эти исходники.
На данном этапе я хочу интегрировать форму/фрейму в IDE Delphi. Это необходимо, чтобы дизайнер мог корректно работать со свойствами и событиями, которые в будущем будут появляться. А для этого необходим визард. Поэтому пока я создам пустую базовую форму и фрейму (просто наследники от TForm/TFrame), и сосредоточусь именно на визарде.
Работа
Теперь создаём пакет, и включаем в него необходимые файлы. Код визарда находится в BaseFormsDesign.pas. Я не буду подробно останавливаться на коде, отмечу только функцию GetGlyph, которая загружает подготовленные иконки.
Собираем пакет и устанавливаем.
Результат
После этого, нужно создать новый проект File \ New \ VCL Forms Application - Delphi, либо открыть существующий.
Что с этим делать?
DN Base Form и DN Base Frame создают базовую форму и базовую фрейму по аналогии с обычной Form и Frame. Пока базовые форма и фрейма не содержат полезного кода. Далее я буду наполнять BaseForms.pas полезным кодом, иногда после этого придётся переустанавливать пакет в IDE.
Если у вас уже есть проект (либо Вы создали пустой проект), и Вы хотите у какой-нибудь формы/фрейме (автоматически созданной форме Form1) подменить дефолтового родителя на базового, это делается очень просто:
- открываем исходный код модуля;
- в uses добавляем BaseForms;
- родителя TForm/TFrame заменяем на TBaseForm/TBaseFrame.
Теперь, чтобы дизайнер IDE узнал, что перед ним новая форма, делаем так:
- нажимаем F12 (переход в визуальный редактор формы/фреймы);
- нажимаем Alt+F12 (переход в текстовый редактор dfm-файла формы/фреймы);
- нажимаем Alt+F12 ещё раз, и дизайнер загружает форму/фрейму заново.
Это можно проделать без сохранения модуля и сразу увидеть результат. Но иногда Delphi не даёт переключиться в редактор dfm-файла (это справедливо для фрейм, если есть другие открытые модули, в которые встроена текущая). Тогда так: сохранить, закрыть и открыть файл заново.
Ссылки:
Основу визарда я в своё время подсмотрел у Tnt Unicode Controls, которые были бесплатными. Теперь проект в исходном виде уже не существует. Для адаптации визарда для Delphi 2010 мне помогли:
UPD: несколько замечаний
Замечание 1
Читайте также: