Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save anonymous/1236f2a389ef2f2bbc1a9db15e842ed2 to your computer and use it in GitHub Desktop.
Save anonymous/1236f2a389ef2f2bbc1a9db15e842ed2 to your computer and use it in GitHub Desktop.
Форма его значения и свойства

Форма его значения и свойства



Ссылка на файл: >>>>>> http://file-portal.ru/Форма его значения и свойства/


Что такое Форма? Значение и толкование слова forma, определение термина
Программируем формы
Основные признаки и свойства формы.
























Решаемая на компьютере задача реализуется в виде прикладной программы, которую для краткости называют приложением. В основе разработки приложения в среде Delphi лежит проект. Центральной частью проекта является форма, на которую помещаются необходимые для решения конкретной задачи компоненты. В такой последовательности - проект - формы - компоненты - мы и рассмотрим процесс создания приложения в среде Delphi. По ходу изложения материала мы будем часто обращаться к примеру с вычислением идеального веса, который был рассмотрен в первой главе. Если вы его забыли, перечитайте первую главу еще раз. Приложение собирается из многих элементов: Каждый элемент размещается в отдельном файле и имеет строго определенное назначение. Набор всех файлов, необходимых для создания приложения, называется проектом. Компилятор последовательно обрабатывает файлы проекта и строит из них выполняемый файл. Основные файлы проекта можно разделить на несколько типов:. На основании сказанного можно изобразить процесс создания приложения в среде Delphi от постановки задачи до получения готового выполняемого файла рисунок 7. Давайте рассмотрим назначение и внутреннее устройство файлов проекта. Это поможет вам легче ориентироваться в проекте. Помните, с чего вы начинали знакомство со средой Delphi? Итак, первая составная часть проекта - это текстовый файл с расширением DFM, описывающий форму. В DFM-файле сохраняются значения свойств формы и ее компонентов, установленные вами в окне свойств во время проектирования приложения. Количество DFM-файлов равно количеству используемых в приложении форм. Например, в нашем примере об идеальном весе используется только одна форма, поэтому и DFM-файл только один - Unit1. Если вы желаете взглянуть на содержимое DFM-файла, вызовите у формы контекстное меню щелчком правой кнопки мыши и выберите команду View as Text рисунок 7. Переход к текстовому представлению формы с помощью команды View as Text контекстного меню. В ответ среда Delphi вместо графического изображения формы покажет следующий текст в редакторе кода: Несмотря на столь длинный текст описания, разобраться в нем совсем не сложно. Здесь на специальном языке задаются исходные значения для свойств формы Form1 и ее компонентов Button1, Button2, Edit1, Edit2, Label1, Label2. Большего знать не требуется, поскольку вы всегда будете использовать визуальные средства проектирования и работать с графическим представлением формы, а не с текстовым описанием. Раз так, давайте поспешим вернуться к графическому представлению, не внося в текст никаких изменений. Для этого вызовите контекстное меню редактора кода и выберите команду View as Form рисунок 7. Переход к графическому представлению формы с помощью команды View as Form контекстного меню. На экране снова появится графический образ формы. Если вы все-таки внесли корректировки в текст, то они отразятся на внешнем виде формы. Файл описания формы DFM-файл нужен только на этапе проектирования. При сборке приложения описание формы из DFM-файла помещается в специальную область данных выполняемого файла область ресурсов. Когда во время работы приложения происходит создание формы, ее описание извлекается из области ресурсов и используется для инициализации формы и ее компонентов. В результате форма отображается на экране так, как вы задали при проектировании. Каждой форме в проекте соответствует свой программный модуль unit , содержащий все относящиеся к форме объявления и методы обработки событий, написанные на языке Delphi. Программные модули размещаются в отдельных файлах с расширением PAS. Их количество может превышать количество форм. Потому, что в ряде случаев программные модули могут и не относиться к формам, а содержать вспомогательные процедуры, функции, классы и проч. Наша задача об идеальном весе очень простая, поэтому в ней имеется только один программный модуль, связанный с формой. Не поленитесь изучить его внимательно:. Дадим необходимые комментарии к тексту программного модуля. В самом начале после ключевого слова unit записывается имя модуля. Ни в коем случае не изменяйте это имя вручную. Среда Delphi сама подставит после слова unit новое имя. После этого удалите старый модуль. Содержание интерфейсной секции модуля interface начинается с подключения стандартных модулей библиотеки VCL, в которых определены часто вызываемые подпрограммы и классы помещенных на форму компонентов. Среда Delphi формирует список модулей без вашего участия и автоматически пополняет его, когда вы добавляете на форму новые компоненты. Тем не менее, список подключенных модулей можно изменять прямо в редакторе кода вручную. В разделе описания типов type объявлен класс формы. По умолчанию он называется TForm1 и порожден от стандартного класса TForm. Помещенные на форму компоненты представлены полями формы. У нас на форме шесть компонентов, поэтому и полей в описании класса тоже шесть. Имена полей совпадают с именами компонентов, заданными в окне свойств. После полей следуют заголовки методов обработки событий. Название каждого такого метода среда Delphi формирует автоматически на основании имени компонента и имени генерируемого им события. Например, для кнопки Button1 метод обработки события OnClick называется Button1Click. Обратите внимание, что поля, представляющие компоненты формы, а также методы обработки событий получают атрибут видимости published он принимается по умолчанию для всех наследников TForm. Благодаря этому вы можете работать с ними на визуальном уровне, например, видеть их имена в окне свойств. Поскольку среда Delphi сама управляет содержимым секции published , никогда не модифицируйте эту секцию вручную в редакторе кода , пользуйтесь визуальными инструментами: Для вашего удобства в классе формы заранее объявлены пустые секции private и public , в которых вы можете размещать любые вспомогательные поля, методы и свойства. Среда Delphi их "в упор не видит", поэтому с ними можно работать только на уровне программного кода. Вы можете помещать в секцию private атрибуты, которые нужны только самой форме, а в секцию public - атрибуты, которые нужны еще и другим формам и модулям. Переменная Form1 - это ссылка на объект класса TForm1 , конструирование которого выполняется в главном файле проекта - DPR-файле см. На этом содержание интерфейсной секции модуля заканчивается и начинается раздел реализации implementation. Сначала в нем подключается файл описания формы:. Пожалуйста, не подумайте, что эта директива подключает все файлы с расширением DFM. Подключается лишь один DFM-файл, в котором описана форма данного модуля. Имя DFM-файла получается заменой звездочки на имя модуля, в котором записана директива. Далее следует реализация методов обработки событий. Пустые заготовки для них среда Delphi создает сама одновременно с добавлением заголовков в класс формы. Вы же наполняете их содержанием. Если вы хотите удалить метод обработки события и убрать ссылки на него, просто сделайте метод пустым - удалите весь написанный вами код, включая комментарии, и объявления локальных переменных. При сохранении или компиляции проекта среда Delphi сама выбросит из текста пустые методы. При внимательном изучении исходного текста модуля остается невыясненным один вопрос: Кроме установки значений свойств вы найдете установку и обработчиков событий. Благодаря этому описанию обеспечивается привязка методов формы к соответствующим событиям. Кстати, смысл приведенного фрагмента описания становится более прозрачным, если вспомнить, что события в языке Delphi - это на самом деле свойства, но их значениями являются указатели на методы. Таким образом, установка событий мало чем отличается от установки свойств формы, ведь по природе это одно и то же. Мы достаточно глубоко погрузились во внутреннее устройство файлов описания форм и файлов программных модулей и, признаемся, сделали это намеренно, чтобы дать вам полное понимание вопроса, не заставляя принимать на веру далеко неочевидные вещи. А сейчас пора подняться на уровень проекта и посмотреть, что же объединяет все эти файлы. Для того чтобы компилятор знал, какие конкретно файлы входят в проект, необходимо какое-то организующее начало. И оно действительно есть. Это так называемый файл проекта , имеющий расширение DPR сокр. Он представляет собой главный программный файл на языке Delphi, который подключает с помощью оператора uses все файлы модулей, входящих в проект. Для каждого проекта существует только один DPR-файл. По мере создания новых форм содержимое этого файла видоизменяется автоматически. Когда вы закончите работу и будете готовы компилировать проект, в DPR-файле будет находиться перечень программных модулей, которые будут поданы на вход компилятору. В редакторе кода появится новая страница со следующим текстом:. Немного прокомментируем этот текст. Подключение модуля Forms обязательно для всех программ, так как в нем содержится определение объекта Application. Этот объект лежит в основе любого графического приложения и доступен на протяжении всей его работы. Подключаемый следом модуль Unit1 содержит определение формы. Название формы приводится в фигурных скобках. Директива in указывает на то, что модуль является необходимой частью проекта и существует в виде исходного текста на языке Delphi. Этот значок будет виден на Панели Задач. Дальше следует главный программный блок, содержащий вызовы трех методов объекта Application. Вызов метода Initialize подготавливает приложение к работе, метод CreateForm загружает и инициализирует форму Form1 , а метод Run активизирует форму и начинает выполнение приложения. Фактически время работы метода Run - это время работы приложения. Выход из метода Run происходит тогда, когда пользователь закрывает главную форму приложения; в результате приложение завершается. Никогда не изменяйте DPR-файл вручную. Оставьте эту работу для среды Delphi. Добавление и удаление модулей, а также управление созданием форм осуществляется с помощью команд и диалоговых окон среды. В проект могут входить также логически автономные элементы: Итак, состав проекта понятен. Нужно теперь выяснить, как им управлять - создавать и сохранять проект, добавлять и удалять модули, устанавливать параметры компиляции, собирать и запускать приложение. Этим сейчас и займемся. При запуске среды Delphiавтоматически создается новый проект. Это сделано для вашего удобства. В результате старый проект будет закрыт, а вместо него создан новый. В новый проект среда Delphi всегда помещает чистую форму. В процессе разработки приложения вы добавляете на форму компоненты, пишите обработчики событий, добавляете в проект дочерние формы, в общем, проектируете приложение. Когда что-то уже сделано, имеет смысл сохранить проект. Среда запросит сначала имя для программного модуля с формой, а затем имя для проекта кстати, вы уже сохраняли файл в первой главе. Если файл с введенным именем уже есть на диске, среда Delphi сообщит вам об этом и запросит подтверждение на перезапись существующего файла или запись под другим именем. Операции эти элементарны и не требуют дальнейших пояснений. На экране появится окно диалога рисунок 7. С открытым проектом можно продолжить работу: При создании более или менее сложного приложения программист всегда должен знать, на какой стадии разработки он находится, иметь представление о составе проекта, уметь быстро активизировать нужный файл, добавить в проект какой-либо новый файл или удалить ненужный, установить параметры компиляции, и т. Для этого в среде Delphi имеется окно управления проектом - окно Project Manager. Фактически это визуальный инструмент для редактирования главного файла проекта. После выбора этой команды на экране появится окно, в котором проект представлен в виде дерева рисунок 7. Выделенный жирным шрифтом элемент Project1 - это наш проект. Его имя совпадает с именем выполняемого файла, который получается в результате компиляции и сборки всех модулей проекта. Список модулей отображается в виде подчиненных элементов. Если элемент является формой, то он в свою очередь сам состоит из двух подчиненных элементов: Управление проектом выполняется с помощью контекстного меню, которое вызывается щелчком правой кнопки мыши по элементу Project1 рисунок 7. Команда Описание Add… Добавляет существующий файл модуль в проект. Remove File… Удаляет файл модуль из проекта. Save Сохраняет проект на диск. Options… Вызывает диалоговое окно настройки проекта Project Options. Activate Делает проект активным при работе с группой проектов, см. Remove Project Удаляет проект из группы см. Build Sooner Перемещает проект вверх по списку, определяющему очередность сборки проектов. Используется при работе с группой проектов см. Build Later Перемещает проект вниз по списку, определяющему очередность сборки проектов. Compile All From Here Компилирует измененные проекты по порядку, начиная с выделенного проекта. Build All From Here Компилирует все проекты по порядку, начиная с выделенного проекта. Управление отдельным модулем выполняется с помощью контекстного меню, которое вызывается щелчком правой кнопки мыши по соответствующему элементу, например Unit1 рисунок 7. Контекстное меню модуля в окне управления проектом. Команда Описание Open Открывает модуль. Если модуль содержит форму, то на экране появляется ее графическое представление. Иначе, на экране появляется редактор кода с исходным текстом программного модуля. Remove From Project Удаляет модуль из проекта. Save Сохраняет модуль на диск. Save As… Сохраняет модуль с новым именем. Теперь вы всегда сможете узнать, из каких файлов состоит тот или иной проект, а управление им не составит для вас никакого труда. На практике несколько проектов могут быть логически связаны между собой, например проект динамически подключаемой библиотеки связан с проектом приложения, в котором используется эта библиотека. Среда Delphi позволяет объединить такие проекты в группу. Именно для этого в окне управления проектом имеется корневой элемент ProjectGroup1, подчиненными элементами которого и являются логически связанные проекты. Порядок элементов определяет очередность сборки проектов. Изменить порядок можно с помощью команд Build Sooner и Build Later , которые находятся в контекстном меню, вызываемом щелчком правой кнопки мыши по соответствующему проекту рисунок 7. На данный момент в группе существует только один проект - Project1. Для добавления других проектов в группу воспользуйтесь контекстным меню, которое вызывается щелчком правой кнопки мыши по элементу ProjectGroup1 рисунок 7. Команда Описание Add New Project… Создает новый проект и добавляет его в группу. Add Existing Project… Добавляет существующий проект в группу. Save Project Group Сохраняет файл, описывающий группу проектов. Save Project Group As… Сохраняет описание группы проектов в файле с другим именем. View Project Group source Показывает текстовый файл, описывающий группу проектов. Когда в группу объединены несколько проектов, среда Delphi создает специальный текстовый файл с описанием этой группы. Файл имеет расширение BPG от англ. Borland Project Group , а его имя запрашивается у пользователя. Для групп, состоящих из одного единственного проекта BPG-файл не создается. Проект имеет много различных параметров, с помощью которых вы управляете процессом компиляции и сборки приложения. Установить параметры проекта можно в окне Project Options. На экране появится диалоговое окно; вам останется лишь установить в нем нужные значения параметров. Диалоговое окно параметров проекта состоит из нескольких вкладок. Параметров очень много, поэтому мы рассмотрим только те, которые используются наиболее часто. На вкладке Forms рисунок 7. На вкладке Application рисунок 7. В среде Delphi дополнительно можно задать файл справки Help file и значок Icon. Вкладка Application в окне параметров проекта. На вкладке Compiler рисунок 7. Оба этих переключателя полезны при отладке программы: Вкладка Compiler в окне параметров проекта. Включив переключатели Show hints и Show warnings , вы будете получать от компилятора весьма полезные подсказки hints и предупреждения warnings , а не только сообщения об ошибках. Вкладка Compiler Messages в окне параметров проекта. На вкладке Linker рисунок 7. Обладателям среды Delphi следует обратить внимание на группу Memory sizes , особенно на два параметра: Min stack size и Max stack size. Они задают соответственно минимальный и максимальный размеры стека прикладной программы. Вам может потребоваться увеличить значения этих параметров при написании приложения, активно использующего рекурсивные подпрограммы. Наиболее важные из них: Output directory - каталог, в который помещается выполняемый файл; Unit output directory - каталог, в который помещаются промежуточные объектные модули DCU-файлы ; Search path - список каталогов, в которых осуществляется поиск программных модулей. На вкладке Version Info рисунок 7. Для того чтобы эта информация помещалась в выполняемый файл, нужно включить переключатель Include version information in project. Номер версии задается в виде четырех чисел: Major version - старший номер версии программы его обычно увеличивают при внесении в программу концептуально новых возможностей ; Minor version - младший номер версии программы его обычно увеличивают при незначительном расширении функциональных возможностей программы ; Release - номер выпуска программы, которая отлажна и пригодна к использованию заказчиком; Build - порядковый номер сборки проекта он автоматически увеличивается на единицу при компиляции проекта, если включен переключатель Auto-increment build number. Все эти параметры несут лишь информативный характер и не влияют на работу самой программы. Однако, информация о версии может использоваться специальными программами установки пользовательских программ для контроля за тем, чтобы более новые версии библиотек не заменялись более старыми. Вкладка Version Info в окне параметров проекта. На вкладке Packages рисунок 7. Пакеты - это внешние библиотеки компонентов, они рассмотрены в главе Обратите внимание на переключатель Build with runtime packages , который позволяет существенно уменьшить размер выполняемого файла за счет использования внешних библиотек компонентов вместо встраивания их кода непосредственно в выполняемый файл. Этот режим выгоден при создании нескольких программ, построенных на базе большого количества общих компонентов. Вкладка Packages в окне параметров проекта. Компиляция и сборка проекта могут выполняться на любой стадии разработки проекта. Под компиляцией понимается получение объектных модулей DCU-файлов из исходных текстов программных модулей PAS-файлов. Под сборкой понимается получение выполняемого файла из объектных модулей. В среде Delphi компиляция и сборка проекта совмещены. При этом компилируются все исходные модули, содержимое которых изменялось после последней компиляции. В результате для каждого программного модуля создается файл с расширением DCU сокр. Затем среда Delphi компилирует главный файл проекта и собирает иногда говорят компонует из DCU-модулей выполняемый файл, имя которого совпадает с именем проекта. К сведению профессионалов заметим, что смышленый компилятор среды Delphi выбрасывает из выполняемого файла весь неиспользуемый программный код, поэтому не стоит волноваться по поводу лишних объектов и подпрограмм, которые могут присутствовать в подключенных модулях. Существует особый вид компиляции и сборки - полная принудительная компиляция всех программных модулей проекта, для которых доступны исходные тексты, с последующей сборкой выполняемого файла. При этом не важно, вносились в них изменения после предыдущей компиляции или нет. В результате тоже создается выполняемый файл, но на это тратиться немного больше времени. Когда после многочисленных компиляций вы исправите все ошибки и получите-таки выполняемый файл, можно будет посмотреть на результат вашего самоотверженного труда. Перед выполнением будет автоматически повторен процесс компиляции если в проект вносились изменения и после его успешного завершения приложение запустится на выполнение. В результате вы увидите на экране его главную форму. Вот собственно и все, что мы хотели поведать вам о проекте. В целом вы представляете, что такое проект, и знаете, как им управлять. Пора заняться составными частями проекта и одновременно основными элементами любого приложения в среде Delphi - формами. Из первой главы вы уже имеете общее представление о форме, теперь настало время изучить ее более пристально. Фактически форма - это главный компонент приложения, который, как и менее значительные компоненты, имеет свойства. При создании новой формы среда Delphi сама задает начальные значения свойствам формы, но вы можете изменить их так, как считаете нужным. Это можно сделать во время проектирования формы в окне свойств или во время выполнения приложения с помощью операторов языка Delphi. Форма имеет очень много свойств, и поначалу в них легко запутаться. Практика показывает, что путаница возникает из-за алфавитного порядка свойств в окне Object Inspector: Чтобы у вас сложилось представление о возможностях формы, рассмотрим основные свойства формы в порядке их важности. Для этого нам понадобится новое приложение. Среда Delphi автоматически создаст в новом проекте чистую форму и поместит ее исходный текст в редактор кода рисунок 7. Форма на экране и ее описание в редакторе кода. Сразу сохраните проект и его форму, чтобы дать им осмысленные имена. Полигон для изучения формы подготовлен, можно заняться ее свойствами. Главное свойство, с которого вы начинаете настройку формы, - это свойство Name - имя. Оно содержит идентификатор, используемый для обращения к форме из программы рисунок 7. Первой же форме нового проекта автоматически назначается имя Form1. Мы советуем всегда его изменять, чтобы имя формы отражало ее роль в приложении. Например, главную форму приложения можно назвать MainForm если ничего лучше в голову не приходит. На будущее заметим, что свойство Name есть в любом компоненте, и оно редактируется в окне свойств. Каждая форма приложения должна иметь понятный заголовок, говорящий пользователю о ее назначении. Заголовок задается в свойстве Caption. Наша форма - учебная, поэтому мы дадим ей заголовок Main , говорящий о том, что это просто главная форма рисунок 7. Если вам вдруг взбрела в голову идея изменить шрифт, цвет или высоту заголовка, то не ищите для этого подходящих свойств. Все это - параметры графической оболочки операционной системы, и задаются они в настройках этой оболочки. Настраивая форму, нужно принимать во внимание, какой пользовательский интерфейс будет иметь ваше приложение: Multiple Document Interface или обычный одно-документный интерфейс SDI от англ. За это отвечает свойство формы FormStyle , которое может принимать следующие значения:. Многие приложения, с которыми вы работаете, имеют пользовательский интерфейс MDI. Они состоят из основного окна, которое включает одно или несколько внутренних окон. Внутренние окна ограничены областью основного окна и не могут выходить за его границы. Для главной формы, соответствующей основному окну MDI-приложения, значение свойства FormStyle должно быть равно fsMDIForm. Для всех второстепенных форм, соответствующих внутренним окнам, значение свойства FormStyle равно fsMDIChild. Для окон диалога, выполняющихся в монопольном режиме, свойство FormStyle равно значению fsNormal, что дает возможность выносить их за пределы основной формы. Если программа имеет пользовательский интерфейс SDI, то каждая форма существует в виде отдельного независимого окна. Одно из окон является главным, однако оно не содержит другие окна. В SDI-приложении значение свойства FormStyle равно fsNormal и для главной формы, и для второстепенных форм. В некоторых случаях допускается установка значения fsStayOnTop для того, чтобы форма всегда отображалось поверх других форм. Очевидно, что наш простой вычислитель идеального веса является SDI-приложением и поэтому свойство FormStyle имеет значение по умолчанию - fsNormal. Теперь определимся с размерами формы и ее местоположением на экране. Установить размеры и положение формы проще всего во время проектирования с помощью мыши. Другой способ - обратиться к окну свойств и задать размеры формы с помощью свойств Width и Height , а местоположение - с помощью свойств Left и Top значения задаются в пикселах. Кроме того, с помощью свойства Position можно организовать автоматическое размещение формы на экране, выбрав одно из следующих возможных значений:. Иногда размеры формы рассчитываются исходя из размеров ее внутренней рабочей области client area , на которой размещаются компоненты. Как известно, в рабочую область не входят рамка и заголовок. Размеры рабочей области хранятся в свойствах ClientWidth и ClientHeight. При их установке значения свойств Width и Height автоматически пересчитываются и наоборот. Бывает, что при выборе размеров формы учитываются размеры экрана. Поскольку современные видео-адаптеры поддерживают множество режимов с различными разрешениями, встает вопрос: На этот случай в форме предусмотрено свойство Scaled. Если оно установлено в значение True, то форма будет автоматически масштабироваться в зависимости от разрешающей способности дисплея. При перемещении по экрану, форма может слегка прилипать к краям экрана, если края формы находятся в непосредственной близости от них. Это происходит в том случае, если свойство ScreenSnap содержит значение True. Расстояние формы до краев экрана, при котором форма прилипает, задается в свойстве SnapBuffer и измеряется в пикселях. Работая с приложением, пользователь может свернуть форму или развернуть ее на всю рабочую область экрана с помощью соответствующих кнопок рамки. Состояние формы свернута или развернута определяется свойством WindowState , которое принимает следующие значения:. Если при проектировании вы измените значение свойства WindowState на wsMinimized или wsMaximized, то получите форму, которая при первом появлении будет автоматически либо свернута в панель задач, либо развернута на весь экран. На компьютере с двумя и более мониторами существует возможность выбрать для формы монитор, на котором она отображается. Для этого следует установить свойство DefaultMonitor в одно из следующих значений:. Свойство DefaultMonitor учитывается лишь в том случае, если в программе существует главная форма. С размерами формы все ясно и теперь желающие могут изменить стандартный цвет ее фона с помощью свойства Color. Для этого следует обратиться к окну свойств. Перейдите к свойству Color , откройте выпадающий список, и выберите любой цвет из набора базовых цветов. Базовые цвета представлены в списке именованными константами. Вы можете также выбрать цвет из всей цветовой палитры, выполнив двойной щелчок мыши в поле значения свойства. На экране появится стандартное диалоговое окно выбора цвета рисунок 7. Когда вы установите цвет в окне свойств, изменение немедленно отразится на форме. Можно работать с самыми разными цветами, но хорошим тоном считается использовать стандартную цветовую гамму. Поэтому лучшее значение для свойства Color - clBtnFace цвет такой, как у кнопок. Во внешнем виде формы очень важную роль играет рамка и расположенные на ней кнопки "Свернуть", "Развернуть", "Закрыть" рисунок 7. Стиль рамки задается с помощью свойства BorderStyle , которое может принимать следующие значения:. Обычно свойство BorderStyle имеет значение bsSizeable. В этом случае форма имеет стандартную изменяемую в размерах рамку как при проектировании , заголовок, меню управления, кнопки "Свернуть", "Развернуть", "Закрыть" и, иногда, "Справка". Для указания того, какие именно из этих элементов отображать, используется свойство BorderIcons. Список его возможных значений следующий:. Если вы разрабатываете коммерческое приложение, а не тестовый пример, следует позаботиться о том, чтобы форма имела в своем левом верхнем углу выразительный значок. Для разработки значков существует множество средств, на которых мы не будем останавливаться. Когда значок готов и сохранен в файле, его нужно просто установить в качестве значения свойства Icon рисунок 7. Для этого откройте окно Picture Editor нажатием кнопки с многоточием рисунок 7. Сценарий решения задачи может потребовать, чтобы в некоторый момент форма стала невидимой, то есть исчезла с экрана. За "видимость" формы отвечает булевское свойство Visible. Установка ему значения False скроет форму, а установка значения True покажет ее. Некоторые части формы можно сделать прозрачными рисунок 7. Причем щелчок мыши по прозрачной области формы будет приводить к активизации окон форм , находящихся за формой. Это достигается установкой свойства TransparentColor в значение True и выбором цвета прозрачности в свойстве TransparentColorValue. Все пиксели формы с цветом TransparentColorValue будут прозрачными. Форма может быть полупрозрачной рисунок 7. За полупрозрачность формы отвечают свойства AlphaBlend и AlphaBlendValue. Первое свойство включает и выключает эффект полупрозрачности, а второе определяет силу прозрачности. Мы положили на форму компонент Image , загрузили в него картинку свойство Picture , затем в форме установили свойство AlphaBlend в значение True и свойство AlphaBlendValue - в значение После сборки и запуска программы получили эффект полупрозрачности. Иногда бывает нужно просто запретить доступ к форме, не убирая ее с экрана. Для этого служит другое булевское свойство Enabled. Обычно оно равно значению True, но стоит ему присвоить противоположное значение, и после запуска приложения вы не сможете сделать форму активной. Как вы понимаете, все описанные выше свойства доступны не только в окне свойств, но и в редакторе кода, то есть в тексте программы. При работе с формой на уровне исходного кода вы также получаете доступ к некоторым дополнительным свойствам, которые не видны в окне свойств. Они будут рассматриваться по мере надобности. Итак, со свойствами мы разобрались и пора сказать пару слов о возникающих при работе с формой событиях. С вашего позволения мы опустим те события формы, которые происходят во всех видимых на экране компонентах мы о них расскажем позже, когда будем рассматривать компоненты. Перечислим лишь характерные события форм:. Часто одной формы для решения задачи бывает мало. Поэтому сейчас мы рассмотрим, как добавить в проект новую форму, выбрать главную форму приложения, переключаться между формами. Затем мы расскажем, как на этапе работы приложения решается вопрос показа форм на экране. Добавить в проект новую форму крайне просто: При этом в окне редактора кода автоматически появится соответствующий новой форме программный модуль. Только что созданной форме дайте имя SecondaryForm свойство Name и заголовок Secondary свойство Caption - рисунок 7. Существует и второй, более продуктивный, способ создания форм. Он основан на использовании готовых форм, существующих в Хранилище Объектов среды Delphi. Хранилище Объектов Object Repository содержит заготовки форм, программных модулей и целых проектов, которые вы можете либо просто скопировать в свой проект, либо унаследовать, либо вообще использовать напрямую. Среда Delphi откроет окно, показанное на рисунке 7. Окно создания новой формы или другого элемента проекта. На вкладках Forms и Dialogs существует переключатель, указывающий, что нужно сделать с формой-заготовкой: Отличие между ними состоит в следующем:. Какой из режимов использовать - зависит от условия задачи. Режим Copy хорош просто тем, что не с нуля начинает разработку новой формы. Режим Inherit полезен, когда в проекте существует несколько форм, у которых совпадают некоторые части. В этом случае все похожие между собой формы порождаются от какой-то одной формы, реализующей общую для всех наследников часть. Режим Use позволяет подкорректировать форму-заготовку прямо в Хранилище Объектов. Для нашего учебного примера двух форм достаточно, поэтому вернемся к уже созданным формам, нажав кнопку Cancel. Иногда за формами становиться трудно уследить. Выберите в этом окне форму, с которой собираетесь работать, и щелкните по кнопке OK. Выбранная форма сразу же станет активной. Когда в проекте несколько форм, возникает вопрос: Давайте не будем ломать голову, а обратимся к известному вам диалоговому окну Project Options и посмотрим на вкладке Forms , какая форма выбрана в выпадающем списке Main form рисунок 7. Главная форма в проекте записана в поле Main form. Вы обнаружите, что выбрана форма MainForm , которая была добавлена в проект первой среда Delphi создает ее автоматически при создании нового проекта. В данном случае этого делать не надо, поскольку главная форма уже установлена правильно. Работая с несколькими формами, вы должны принимать во внимание, что после загрузки приложения отображается только главная форма. Остальные формы хотя и создаются вслед за ней автоматически, на экране сразу не показываются, а ждут пока их вызовут. Форму можно вызвать для работы двумя разными способами:. Покажем, как реализуются эти способы на примере вызова формы SecondaryForm из формы MainForm. Чтобы форма SecondaryForm была доступна для использования формой MainForm , необходимо подключить модуль формы SecondaryForm к модулю формы MainForm. Это делается очень просто. В появившемся диалоговом окне выберите модуль Second так называется модуль формы SecondaryForm и нажмите кнопку OK рисунок 7. На экране не произойдет видимых изменений, но в секции implementation программного модуля Main добавится строка. Теперь обеспечим вызов формы SecondaryForm из формы MainForm. В большинстве случаев формы вызываются при нажатии некоторой кнопки. Добавим такую кнопку на форму MainForm. Отыщите в палитре компонентов на вкладке Standard значок с подсказкой Button , щелкните по нему, а затем щелкните по форме MainForm. На форме будет создана кнопка Button1 и в окне свойств отобразится список ее свойств. Перейдите к свойству Caption и замените текст Button1 на текст Secondary рисунок 7. Текст на кнопке записывается в свойстве Caption. Чтобы при нажатии кнопки отображалась форма SecondaryForm , необходимо для этой кнопки определить обработчик события OnClick. Активизируйте в окне свойств вкладку Events и сделайте двойной щелчок в поле события OnClick. Среда Delphi определит для кнопки обработчик события, поместив программную заготовку в исходный текст модуля Main. Вставьте в тело обработчика оператор SecondaryForm. Show , в результате метод обработки события примет следующий вид:. Выполните компиляцию и запустите приложение. Когда на экране покажется форма MainForm , нажмите кнопку Secondary. На экране покажется еще одна форма - SecondaryForm. Вы можете произвольно активизировать любую из двух форм рисунок 7. Таким образом, при использовании метода Show пользователь может работать одновременно с несколькими формами, переключаясь между ними. Переключаясь между формами MainForm и SecondaryForm , вы можете предположить, что они равноправны. Однако на самом деле это не так. Форма MainForm является главной, а форма SecondaryForm - второстепенной. В чем это проявляется? Да хотя бы в том, что если вы закроете форму MainForm , то форма SecondaryForm тоже закроется, и приложение завершится. Если же вы закроете форму SecondaryForm , то форма MainForm на экране останется. Ситуация, когда пользователю предлагается для работы сразу несколько доступных форм, встречается редко. Поэтому для показа формы в основном применяется метод ShowModal. Он обеспечивает работу формы в монопольном режиме, не возвращая управление до тех пор, пока пользователь не закроет форму. Посмотрим, что произойдет, если в предыдущем примере заменить вызов метода Show на ShowModal. После компиляции и запуска приложения нажмите на форме MainForm кнопку Secondary. После появления формы SecondaryForm попробуйте активизировать форму MainForm. У вас ничего не выйдет, поскольку на этот раз форма SecondaryForm отображается в монопольном режиме рисунок 7. Вторая форма работает в монопольном режиме. Только закрыв форму SecondaryForm , вы вернетесь к форме MainForm. Теперь понятно и назначение метода ShowModal. Понятие компонента является фундаментальным для среды Delphi. Без компонентов все преимущества визуальной разработки приложений исчезают и говорить становится не о чем. Поэтому соберите все силы и внимательно прочитайте этот параграф, пытаясь усвоить не только технику использования компонентов, но и саму их суть. Объединение этих двух точек зрения дает цельное представление о том, что такое компоненты. При работе с компонентами из среды визуальной разработки приложений вы всегда видите их лицевую сторону. Однако как только вы начинаете писать обработчики событий, и управлять компонентами программно, вы соприкасаетесь с программной стороной компонентов, суть которой - объекты. Таким образом, среда Delphi обеспечивает симбиоз визуального и объектно-ориентированного программирования. При анализе структуры компонента обнаруживается, что его природа троична и лучше всего описывается формулой:. Невизуальные компоненты могут иметь подписи рисунок 7. Визуальные компоненты подразделяются на компоненты, рисуемые оконной системой Windows, и компоненты, рисуемые графической библиотекой VCL рисунок 7. Компоненты, рисуемые оконной системой Windows и графической библиотекой Delphi. Общая классификация компонентов составлена, поэтому перейдем к обсуждению их свойств и событий. Очевидно, каждый компонент обладает специфичным набором свойств и событий и, казалось бы, изучать их следует в контексте изучения компонента. Так мы и будем поступать в будущем при рассмотрении отличительных свойств компонентов. Однако сейчас имеет смысл рассмотреть общие для большинства компонентов свойства и события. Невизуальные компоненты практически не имеют общих свойств и событий, единственные общие для них свойства - это Name комментариев не требует и Tag целочисленное значение, не несущее смысловой нагрузки - вы можете использовать его по своему усмотрению. А вот визуальные компоненты имеют много общих свойств и событий, которые мы сейчас и рассмотрим. Для организации буксировки и стыковки, в визуальных компонентах существует еще несколько событий:. Часто требуется разместить на форме несколько компонентов одного и того же типа, например, кнопок. В этом случае действуйте следующим образом:. Если вы по каким-либо причинам решили убрать лишний компонент с формы, просто выберите его с помощью мыши и нажмите клавишу Del. На стадии проектирования любой компонент может быть выделен на форме. Свойства выделенного компонента видны в окне свойств и доступны для редактирования. Чтобы выделить компонент, достаточно навести на него указатель и нажать кнопку мыши. Вокруг компонента тут же появятся так называемые "точки растяжки" sizing handles для изменения размеров компонента по ширине и высоте рисунок 7. При проектировании сложных форм вы столкнетесь с ситуацией, когда сразу в нескольких компонентах нужно установить некоторое свойство в одно и то же значение. Например, в нескольких кнопках установить свойство Enabled в значение False. Быстрее всего это можно сделать, если выделить несколько компонентов, после чего перейти к окну свойств и изменить нужное свойство. Когда на форме выделено несколько компонентов, в окне свойств видны только их общие свойства. Когда на форме выделено несколько компонентов, в окне свойств отображаются лишь их общие свойства. Активизируйте нужное свойство и установите в нем нужное значение. Вы увидите, что эта установка отразится на всех выделенных компонентах рисунок 7. Когда на форме выделено несколько компонентов, некоторые свойства могут как бы не иметь значения в окне Object Inspector в поле значения - пусто. Это говорит о том, что свойства имеют различные значения в выделенных компонентах. Когда все компоненты помещены на форму, нужно оценить ее с точки зрения эстетики. Отойдите от компьютера и посмотрите на форму со стороны. Как правило, в пейзаже обнаружатся некоторые изъяны. Наверняка что-то захочется уменьшить, что-то увеличить, что-то переместить на другое место. Чтобы упростить вам позиционирование и изменение размеров компонентов, форма отображает на этапе разработки сетку grid. Компоненты автоматически выравниваются на пересечении воображаемых линий сетки, когда вы переносите их из палитры компонентов на форму. Изначально шаг между горизонтальными и вертикальными линиями сетки равен 8, но его легко изменить. На экране появится диалоговый блок Environment Options. Кстати, с помощью соседних переключателей можно указать среде Delphi, следует ли вообще показывать сетку Display grid и следует ли выравнивать по ней компоненты Snap to grid. Расстояние между узлами сетки по горизонтали и вертикали. Иногда после грубого размещения компонента на сетке необходимо подогнать его положение и размеры с точностью до точки экрана. Для этого не требуется отключать сетку или изменять ее шаг. Просто выберите компонент на форме и действуйте следующим образом:. Когда на форме много компонентов, ручное выравнивание становится весьма утомительным занятием. На этот случай в среде Delphi предусмотрены средства автоматизированного выравнивания компонентов. Выделите компоненты, которые собираетесь выравнять. Во всех четырех углах каждого выделенного компонента появятся небольшие квадратики-маркеры;. Обратитесь к главному меню и вызовите окно Alignment рисунок 7. Диалоговое окно для выбора способа выравнивания группы компонентов на форме. Выберите в списке то, что вам надо, и нажмите кнопку OK. Окно закроется и все компоненты будут выравнены согласно вашим указаниям. Вспомогательная панель кнопок для выравнивания группы компонентов на форме. При работе с несколькими формами иногда встает задача копирования и перемещения компонентов с одной формы на другую. Обычное перетягивание здесь не помогает. Проблема легко решается с помощью Буфера обмена:. Добавим, что команды работы с Буфером обмена применяются не только для копирования и перемещения компонентов с одной формы на другую, но также для копирования и перемещения компонентов в пределах одной формы между разными компонентами-владельцами, например для перемещения кнопок с одной панели на другую. Необходимость использования Буфера обмена в этом случае вызвана тем, что компоненты твердо знают своего владельца например, кнопки знают панель, на которой они расположены , поэтому обычная операция буксировки ни к чему не приводит. Итак, вы уже много знаете о компонентах, и дальше углубляться в них не имеет смысла. Начиная со следующей главы, мы начнем знакомить вас с элементами пользовательского интерфейса: А сейчас скажем несколько слов о тех объектах, которые усердно работают "за кулисами" приложения и обеспечивают ему доступ к различным ресурсам компьютера, например экрану, принтеру, Буферу обмена и др. То, о чем мы рассказали выше - это внешняя сторона приложения. А что же происходит внутри? Над всеми формами и компонентами стоит объект Application класса TApplication , олицетворяющий собой приложение в целом. Это главное "действующее лицо", которое создается в начале выполнения любого приложения. Объект Application держит в руках все нити управления: Вы, кстати, уже встречались с ним в файле проекта:. Объект Application отсутствует в палитре компонентов, поэтому его свойства можно изменять только из программы. Кратко рассмотрим наиболее важные свойства этого объекта:. Объект Application имеет несколько полезных событий. Самые важные из них: OnActivate , OnDeactivate , OnException. Из всех методов объекта Application мы упомянем лишь один - Terminate. Он выполняет штатное завершение приложения. Запомните, метод Terminate не вызывает немедленного завершения приложения, давая возможность всем формам корректно себя закрыть. Во время закрытия форм свойство Terminated имеет значение True. При необходимости на помощь объекту Application спешат менее значительные "персоны": Они также являются глобальными и создаются автоматически при запуске приложения если, конечно, подключены стандартные модули, где они расположены. Каждая программа что-то выводит на экран, иначе она просто бесполезна. В среде Delphi экран трактуется как глобальный объект Screen класса TScreen, имеющий набор свойств. Многие из них жестко связаны с физическими характеристиками экрана с "железом" , поэтому в большинстве случаев не доступны для записи. Обозначим самые важные свойства:. В качестве примера использования объекта Screen приведем фрагмент, устанавливающий указателю мыши вид песочных часов на время выполнения какой-либо длительной операции:. Вряд ли сейчас можно встретить компьютеры без миниатюрного "хвостатого" устройства, называемого мышью. Для работы с ним в среде Delphi есть специальный объект Mouse: TMouse , автоматически добавляемый в программу при подключении модуля Controls. Перечислим наиболее важные свойства этого объекта:. Большинство программ выводят некоторый текст или рисунки на печатающее устройство. Для этого полезного дела в среде Delphi имеется специальный объект Printer. Он становится доступен после подключения модуля Printers. Если вы включите этот модуль в проект, сразу после старта будет порожден объект Printer класса TPrinter. Его свойства и методы дают вам весьма неплохие возможности для печати из приложения на все виды принтеров. Однако, тема эта заслуживает отдельной главы см. Напомним, что это буфер, куда можно что-то положить например, текст или рисунок , а потом взять это оттуда. За операции с Буфером обмена в среде Delphi отвечает глобальный объект Clipboard класса TClipboard. Он расположен в модуле Clipbrd. О том, как объект Clipboard используется практически, подробно рассказано в гл. Да, трудновато все это было усвоить, но надо. Тяжело в учении - легко в бою. Утешив себя этой истиной, перейдем к изучению важнейших элементов пользовательского интерфейса - меню, панели инструментов и строки состояния. TLabel; procedure Button1Click Sender: TObject ; procedure Button2Click Sender: Text - - 10 ; end; procedure TForm1. TObject ; begin Close; end; end. TObject ; begin Close; end;. CreateForm TForm1, Form1 ; Application. TObject ; begin SecondaryForm. Суперкомпьютерные технологии IBM помогут повысить качество прогнозирования погоды. Инженер-программист зарабатывает на аукционах среди эвакуаторщиков. Отдам код в хорошие руки. Руководство пользователя SAP BusinessObjects Web Intelligence. Пишу программы на заказ на языках Pascal численные методы, списки, деревья, прерывания под Знаком с паттернами проектирования по книги M. Главная страница - Программные продукты - Статьи - Разработка ПО , Borland. Перемещает проект вверх по списку, определяющему очередность сборки проектов. Перемещает проект вниз по списку, определяющему очередность сборки проектов. Компилирует измененные проекты по порядку, начиная с выделенного проекта. Компилирует все проекты по порядку, начиная с выделенного проекта. VideoStudio Ultimate X10 ML. Zend Server with Z-Ray Developer Edition - Standard. Microsoft Windows Home 10 Russian Academic OLP 1 License No Level Legalization GetGenuine. Java Standard Edition 7 Java SE7. Язык программирования Java, базовый курс или часть 1 JSF 2. IBM Commerce Solutions Selling Technical Mastery Test v1 IBM Maximo Asset Management V7. MakerBot Replicator 5th GEN. CASE, RAD, ERP, OLAP. Программирование на Microsoft Access. Краткие описания программ и ссылки на них. Компьютерный дизайн - Все графические редакторы. Проект mic-hard - все об XP - новости, статьи, советы. Пишу программы на заказ профессионально Пишу программы на заказ на языках Pascal численные методы, списки, деревья, прерывания под NET C 76 Знанию asp.


Расписание электрички центр репьево
Снять квартиру в минске недорого
Активировать iphone без симки
Программирование на языке Delphi. Глава 7. Проект приложения
Стиральная машина bosch wlg 24260 oe инструкция
Аэропорт внуково расписание прибытия
Мотивирующие фильмы про успех на реальных событиях
Занятие 2 Понятиe свойств в Delphi. Приложение, в котором изображение перемещается по форме за счет изменения значений егосвойств
Изменение границ субъектов рф
Классный мюзикл давай танцевать текст
Свойства формы
Как готовить королевские креветки варено мороженные
Обезболивание седалищного нерва
Как правильно делать обрезку ремонтантной малины
Урок на тему "Форма. Назначение. Свойства"
Скачать 333 приказ министра обороны
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment