Как изменить цвет шапки формы в delphi
Управление свойствами визуальных компонент в режиме выполнения
-
-
- Обзор
Каждый компонент, который Вы помещаете на форму, имеет свое отражение в окне Инспектора Объектов (Object Inspector). Как Вы помните, Object Inspector имеет две “странички” — “Properties” (Свойства) и “Events” (События). Создание программы в Delphi сводится к “нанесению” компонент на форму (которая, кстати, также является компонентом) и настройке взаимодействия между ними путем:
-
- изменения значения свойств этих компонент
- написания адекватных реакций на события .
Более подробно события мы рассмотрим на следующем уроке, а сейчас сосредоточимся на свойствах и, в меру необходимости, затронем создание откликов на события.
Как Вы уже успели, наверное, заметить, свойство является важным атрибутом компонента. Для пользователя (программиста) свойство выглядит как простое поле какой-либо структуры, содержащее некоторое значение. Однако, в отличие от “просто” поля, любое изменение значения некоторого свойства любого компонента сразу же приводит к изменению визуального представления этого компонента, поскольку свойство инкапсулирует в себе методы (действия), связанные с чтением и записью этого поля (которые, в свою очередь, включают в себя необходимую перерисовку). Свойства служат двум главным целям. Во-первых, они определяют внешний вид формы или компонента. А во-вторых, свойства определяют поведение формы или компонента.
Существует несколько типов свойств, в зависимости от их “природы”, т.е. внутреннего устройства.
-
- Простые свойства — это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name представляют собой строки и определяют заголовок и имя компонента или формы.
- Перечислимые свойства — это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример — это свойство типа Boolean , которое может принимать значения True или False.
- Вложенные свойства — это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак “ + ” слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как [] . Установки для вложенных свойств вида “множество” обычно имеют значения типа Boolean . Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных (рис 1). Некоторые свойства, например, Font , для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.
Delphi позволяет легко манипулировать свойствами компонент как в режиме проектирования (design time), так и в режиме выполнения программы (run time).
В режиме проектирования манипулирование свойствами осуществляется с помощью Дизайнера Форм (Forms Designer) или, как Вы уже видели, на страничке “Properties” Инспектора Объектов. Например, для того чтобы изменить свойства Height (высоту) и Width (ширину) кнопки, достаточно “зацепить” мышкой за любой ее угол и раздвинуть до нужного представления. Того же результата можно добиться, просто подставив новые значения свойств Height и Width в окне Object Inspector.
С другой стороны, в режиме выполнения пользователь (программист) имеет возможность не только манипулировать всеми свойствами, отображаемыми в Инспекторе Объектов, но и управлять более обширным их списком. В следующем разделе мы рассмотрим, как это делается.
-
-
- Управление свойствами визуальных компонент в режиме выполнения
- Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. В режиме выполнения невозможно использовать Object Inspector. Однако, доступ к свойствам компонентов довольно легко получить программным путем. Все, что Вы должны сделать для изменения какого-либо свойства — это написать простую строчку кода аналогично следующей:
Вышеприведенная строка устанавливает ширину ( Width ) компонента в значение 35. Если свойство Width компонента еще не было равно 35 к моменту выполнения данной строки программы, Вы увидите, как компонента визуально изменит свою ширину.
Таким образом, нет ничего магического в Инспекторе Объектов. Object Inspector просто является удобным способом выполнения в режиме проектирования того, что может быть осуществлено программным путем в режиме выполнения. Более того, как уже было сказано выше, у компонента могут быть свойства, не отображаемые в окне Инспектора Объектов.
Объектно-ориентированный язык Паскаль, лежащий в основе Delphi, в качестве базового имеет принцип соответствия визуальных компонент тем вещам, которые они представляют. Разработчики Delphi поставили перед собой цель, чтобы, например, представление компонента Button (кнопка), инкапсулирующее некий код, соответствовало визуальному изображению кнопки на экране и являлось как можно более близким эквивалентом реальной кнопки, которую Вы можете найти на клавиатуре. И именно из этого принципа родилось понятие свойства.
Если Вы измените свойства Width и Height компонента Button , кнопка соответствующим образом изменит свои ширину и высоту. Вам нет необходимости после изменения свойства Width указывать объекту, чтобы он перерисовал себя, хотя при обычном программировании именно так Вы и должны поступать. Свойства — это более чем просто данные. Напротив, они делают эти данные “живыми”, и все это происходит перед Вашими глазами! Свойства дают Вам иллюзию, как будто Вы имеете дело с реальными объектами, а не с их программным представлением.
Программа SHAPEDEM.DPR, изображенная на рис. 4, демонстрирует различные способы, с помощью которых можно изменять пользовательский интерфейс при выполнении программы. Эта программа не производит никаких полезных действий кроме демонстрации того, как легко можно создать “дельфийское” приложение с настраиваемым интерфейсом.
Программа SHAPEDEM содержит всего лишь объект TShape , размещенный на форме, вместе с двумя полосами прокрутки и несколькими кнопками. Эта программа интересна тем, что позволяет в режиме выполнения изменять размер, цвет и внешний вид объекта TShape , равно как размер и цвет самой формы.
Рис. 4: Программа SHAPEDEM имеет 2 полосы прокрутки и несколько кнопок
Листинг А показывает код программы SHAPEDEM. Код головного модуля этой программы мы приведем по частям — по мере его написания.
Листинг А: Исходный код программы SHAPEDEM.DPR.
program Shapedem;
Mina in ‘MAIN.PAS’ ;
В нашем примере полосы прокрутки (ScrollBars) используются для изменения размера фигуры, изображенной в средней части экрана, как показано на рис.5. Для выбора нового вида фигуры используйте выпадающий список (ComboBox), а для изменения цвета фигуры или окна (формы) используйте стандартное диалоговое окно выбора цвета, вызываемое кнопками “ Цвет фигуры ” и “ Цвет формы ”.
Что нужно сделать пользователю (программисту) для того чтобы получить возможность “в режиме выполнения” изменять цвет какого-либо элемента или всего окна (формы)? Для этого достаточно выполнить всего лишь несколько действий. Убедитесь сами. Для изменения цвета окна просто выберите компонент ColorDialog из палитры компонентов (она находится на страничке “Dialogs”) и поместите его на форму. Кроме того, поместите на форму обычную кнопку (компонент Button , находится на страничке “Standard”). Для удобства чтения с помощью Object Inspector измените имя компонента (свойство Name ) с “Button1” (которое дается по умолчанию) на “FormColor”, а его заголовок (свойство Caption ) — на “Цвет формы”. Дважды щелкните по кнопке “Цвет формы” — Delphi сгенерирует заготовку метода, который выглядит следующим образом:
procedure TForm1.FormColorClick(Sender: TObject);
Теперь введите две простые строчки кода:
procedure TForm1.FormColorClick(Sender: TObject);
if ColorDialog1.Execute then
Данный код во время выполнения при нажатии кнопки “Цвет формы” вызывает стандартное диалоговое окно выбора цвета, как показано на рис.6.Если в этом диалоговом окне Вы щелкните кнопку OK, выполнится следующая строка:
Этот код установит свойство Color формы Form1 в цвет, который был выбран с помощью диалогового окна ColorDialog1 . Это очень просто.
Та же самая техника может использоваться для изменения цвета фигуры (компонент Shape , объект TShape). Все, что Вам нужно сделать — это поместить на форму другую кнопку, изменить (при желании) ее имя на “ShapeColor”, а заголовок — на “Цвет Фигуры”, дважды щелкнуть по ней мышкой и создать метод аналогичный следующему:
procedure TForm1.ShapeColorClick(Sender: TObject);
if ColorDialog1.Execute then
Что может быть проще.
Отметим, что код, написанный здесь, является самодокументированным. Т.е. любой, мало-мальски знакомый с программированием человек сможет без особого труда разобраться, что же делают эти строки; а если он перед этим прочтет документацию, то для него вообще все будет прозрачно.
Все эти действия можно проделать и автоматически — например, можно изменить цвет определенного элемента формы, чтобы привлечь внимание пользователя к какому-либо действию.
Весь механизм Windows-сообщений, используемый при взаимодействии компонент во время выполнения, оказывается скрытым от программиста, делая процесс создания программ наиболее легким. Сложное программирование в среде Windows становится доступным “широким” массам программистов. Например, программирование изменения размера фигуры с помощью полос прокрутки, требовавшее в “чистом” Windows сложной обработки сообщений в конструкции типа “case”, в Delphi сводится к написанию одной-единственной строчки кода.
Для начала, поместите два компонента ScrollBar на форму (находится на страничке “Standard”) и установите свойство Kind первого компонента в sbHorizontal , а второго — в sbVertical . Переключитесь на страничку “Events” в Инспекторе Объектов и создайте заготовки метода для отклика на событие OnChange для каждой полосы прокрутки. Напишите в каждом из методов по одной строчке следующим образом:
procedure TForm1.ScrollBar1Change(Sender: TObject);
Shape1.Width := ScrollBar1.Position * 3;
procedure TForm1.ScrollBar2Change(Sender: TObject);
Shape1.Height := ScrollBar2.Position * 2;
Код, показанный здесь, устанавливает свойства Width и Height фигуры TShape в соответствие с положением “бегунка” на полосах прокрутки (сомножители 3 и 2 введены только для лучшего представления).
Последняя часть программы SHAPEDEM демонстрирует большие возможности языка Object Pascal, на основе которого построен Delphi. Вы можете ввести элементы в список компонента ComboBox как в режиме проектирования, так и при выполнении программы. При этом в режиме проектирования Вы можете просто ввести нужные элементы в список Items , щелкнув маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство ( Items ).
Перед Вами появится диалоговое окно текстового редактора (String List Editor), в котором Вы и введете элементы (рис.7). Вы могли заметить, что список этих элементов совпадает со списком опций свойства Shape компонента Shape1 ( Shape ). Другими словами, если Вы выделите компонент Shape1 на форме (просто щелкнув по нему) и посмотрите свойство Shape в Инспекторе Объектов, Вы увидите список возможных видов фигур, которые может принимать данный компонент. Это как раз те самые виды фигур, которые мы перечисляли в списке у компонента ComboBox1. Этот список Вы можете найти в on-line справочнике по Delphi по контексту “TShapeType”. Или же, если Вы заглянете в исходный код класса TShape , там увидите те же элементы, формирующие перечислимый тип TShapeType:
TShapeType = (stRectangle, stSquare, stRoundRect,
stRoundSquare, stEllipse, stCircle);
Итак, смысл всего сказанного в том, что за всеми объектами, которые Вы видите в “дельфийской” программе, стоит некий код на Паскале, к которому Вы имеете доступ при “прямом” программировании. Ничто не скрыто от Вас. Это значит, что Вы можете изменить поведение любой части Вашей программы во время выполнения путем написания соответствующего кода.
В нашем конкретном случае, Вам нужно написать только одну строчку кода, которая будет выполнена в качестве отклика на щелчок пользователем по выпадающему списку ComboBox1. Чтобы написать код этого отклика, в режиме проектирования выделите компонент ComboBox1 на форме (как всегда, просто щелкнув по нему левой кнопкой мыши), затем перейдите на страничку “Events” в Инспекторе Объектов. Дважды щелкните по пустому полю напротив события OnClick . В редакторе автоматически сгенерируется следующая заготовка метода:
procedure TForm1.ComboBox1Click(Sender: TObject);
Теперь вставьте одну строчку кода, чтобы метод выглядел следующим образом:
procedure TForm1.ComboBox1Click(Sender: TObject);
Эта строчка кода устанавливает свойство Shape компонента Shape1 в вид, который пользователь выберет в выпадающем списке. Этот код работает благодаря соответствию между порядковыми членами перечислимого типа и числовыми значениями различных элементов в ComboBox . Другими словами, первый элемент перечислимого типа имеет значение 0, что соответствует первому элементу, показанному в ComboBox (см. рис.7). Давайте рассмотрим этот подход несколько подробней.
Если Вы рассмотрите декларацию перечислимого типа TShapeType, Вы увидите, что первый его элемент называется “stRectangle”. По определению, компилятор назначает этому элементу порядковый номер 0. Следующему по порядку элементу назначается номер 1 и т.д. Таким образом, слова “stRectangle”, “stSquare” и т.п., в действительности, просто символизируют порядковые номера в данном перечислимом типе. На элементы в списке ComboBox также можно сослаться по их порядковому номеру, начиная с 0. Именно поэтому так важно (в данном случае) вводить указанные строки в строгом соответствии с декларацией типа TShapeType. Таким образом, используя преобразование типа “ TShapeType(ComboBox1.ItemIndex) ”, Вы можете указать компилятору, что общего имеют элементы в ComboBox и перечислимый тип в TShapeType: а именно, порядковые номера.
Итак, Вы видите, что Delphi является очень гибким и мощным программным средством, которое позволяет Вам быстро реализовать логику Вашей программы и предоставляет полное управление приложением.
Программа SHAPEDEM проста в написании и в освоении. Однако при изменении пользователем размера окна она будет выглядеть “некрасиво”. Давайте изменим ее таким образом, чтобы программа сама обрабатывала изменение размера окна, а заодно изучим компонент меню. Для достижения этих целей сделаем следующее:
- Кнопки и выпадающий список уберем с экрана и вместо них поместим на форму компонент меню ( MainMenu )
- “Заставим” полосы прокрутки изменять свое положение в зависимости от размера окна
- “Заставим” свойство Position полос прокрутки изменяться, чтобы правильно отражать размер формы.
Взглянув на рис.8, Вы сможете увидеть, как будет выглядеть программа после этих изменений.
Рис. 8: Программа SHAPDEM2 имеет возможность реагировать на изменение пользователем размера окна
Листинг B : Программа SHAPDEM2 включает метод FormOnResize. Представлен главный модуль.
WinTypes, WinProcs, Classes, Graphics, Forms, Controls, ColorDlg, StdCtrls, Menus, Dialogs, ExtCtrls;
Delphi| Практическая №1
Среда Delphi включает в себя полный набор визуальных компонентов для быстрой разработки приложений Windows, поддерживающих разработку пользовательского интерфейса. Библиотека визуальных компонентов встроена в среду разработки приложения и представляет собой набор элементов, используемых в качестве фундамента при строительстве приложений (кнопки, однострочные и многострочные редакторы, списки, мультимедийные элементы, различные диалоги и пр.).
Задачи урока
- Создание и сохранение проекта.
- Освоение базовых навыков работы с компонентами Delphi.
- Основы создания приложения Windows с помощью компонентов.
- Изменение основных свойств компонентов.
- Использование компонентов Button и Label
- Запуск приложения.
Выполнение упражнения
В этом уроке мы рассмотрим, как создать приложение — приветствие миру, используя графический интерфейс Windows и стандартные компоненты из состава палитры Delphi (рисунок 1). Оно состоит из кнопки на зелёном фоне, которая пока ничего не делает, и жизнеутверждающей надписи красного цвета на белом фоне. Но всё равно красота!
1. Создание проекта
1. Запустите Delphi и создайте новый проект: File (Файл) ? New (Создать) ? Application (Приложение).
2. Сохраните проект в отдельную папку. Папку, чтобы потом не запутаться, лучше назовите так, как называется урок: «Основы работы». Этого правила следует придерживаться и в дальнейшем.
3. Запустите проект, нажав клавишу F9 или пиктограмму на панели инструментов. Сначала Delphi немного подумает, создавая EXE-файл, а затем запустит его. На экране появится окно — результат вашей работы (рисунок 2).4. Это окно, как и обычное, можно перетаскивать по экрану, изменять размеры, сворачивать и разворачивать, используя стандартные средства Windows по работе с окнами. Проделайте все эти операции и убедитесь в полноценности этого окна.

5. Закройте окно вашего приложения для того, чтобы вернуться в Delphi.
Заметьте, что при запуске приложения у нас будут два практически одинаковых окна. Первое, в сетку, — на конструктор формы. Второе — на работающее приложение. Не перепутайте их!
Перед продолжением разработки закройте окно работающего приложения.
2. Выбор компонентов
На самом деле один компонент у нас уже есть. Это форма. Чтобы в этом убедиться, посмотрите на клетчатое окошко в половину экрана с многообещающим заголовком Form1 (читается как «форма один»), которое вы только что запустили. Согласитесь, что этот компонент довольно большой и многофункциональный, но, к сожалению, пока бесполезный.
Теперь попробуем «напичкать» его другими компонентами, а точнее одним компонентом — кнопкой. Кнопка (по-английски Button) — это самый распространённый в приложениях Windows компонент с одним очень большим плюсом — на неё можно нажимать! Причём после нажатия обязательно должно происходить что-то очень нужное, но об этом в другом уроке.
1. В палитре компонентов выберите категорию Standard.
2. Наведите мышью на пиктограмму кнопки
. При этом, через долю секунды, появится всплывающая подсказка с названием компонента (Button).3. Щёлкните по пиктограмме мышью. Кнопка станет «вдавленной», как показано на рисунке 3.
4. Щёлкните мышью по форме. Компонент появится на форме в том месте, где произошёл щелчок. В результате у нас получилась форма с одной кнопкой (рисунок 4).
5. Запустите приложение и увидите ту же самую форму, как и раньше, но только с кнопкой, на которую можно нажимать. Но вот опять беда… кнопка нажимается, но ничего не происходит. Пока не происходит…
6. Закройте приложение.
Теперь мы научились помещать нужный компонент из палитры компонентов на форму.
3. Размещение компонентов
1. Выделите кнопку на форме. Обратите внимание, что когда компонент выделен, вокруг него отображаются восемь чёрных квадратиков — маркеров (рисунок 4).
2. Измените положение кнопки на форме, «схватив» её мышью, как показано на рисунке 5а.
3. Потяните за левый нижний квадратик у выделенной кнопки, пока она не станет таких же размеров, как на рисунке 5б.
4. Уменьшите размер формы аналогично тому, как изменяете размер окна Windows.
В результате вы должны получить окно, аналогичное тому, что показано на рисунке 6а.
5. Поместите на форму метку (Label). Этот компонент используется в приложениях Windows, наверное, ещё чаще, чем кнопка. Он просто и без излишеств выводит на форму произвольный текст, у которого можно менять цвет, шрифт, размер и т. д. В общем, вещь замечательная, если нужно просто что-то написать на форме! Метка находится в той же вкладке (Standard), что и кнопка, и её значок выглядит следующим образом:
. В результате получим примерно то, что показано на рисунке 6б.6. Запустите приложение, нажав клавишу F9 или щёлкнув мышью на соответствующей пиктограмме . Результат выглядит уже симпатичней, чем в предыдущий раз.
7. Закройте приложение.
4. Свойства компонентов
МЕНЯЕМ ЗАГОЛОВКИ
Теперь поменяем заголовки (свойство Caption) наших компонентов так, как показано на рисунке 7. Заголовки необходимо поменять у трёх компонентов: Form1 (наше разрабатываемое окно), Label1 (метка) и Button1 (кнопка).
! Не ошибитесь. В момент помещения компонента на форму, его заголовок (свойство Caption) совпадает с именем (свойство Name). Имя для нас пока неприкосновенно!
1. Поменяйте заголовок на кнопке (имя Button1). Для этого:
Выберите на форме кнопку.
В окне Инспектор объектов на вкладке Properties найдите свойство Caption и поменяйте его содержимое на надпись “Моя кнопка. ” (рисунок 8).
Рисунок 8.2. Выберите метку (Label1) и аналогичным образом поменяйте её заголовок с “Label1” на “Привет, мир!”.
3. Поменяйте свойство Caption формы (Form1) с «Form1» на «Моя программа». Для этого щёлкните мышью в свободной от компонентов области формы (но не по её заголовку) либо выберите форму в окне Дерево объектов.
Заметьте, что когда вы выбираете разные компоненты, набор свойств на вкладке Propertes окна Инспектор объектов также меняется. Это означает, что каждый компонент обладает своими, присущими только ему, свойствами.
4. Запустите приложение. Теперь оно приобрело более привлекательный вид.
МЕНЯЕМ ЦВЕТ
Теперь настала пора раскрасить наш шедевр. Вначале изменим цвет фона формы и метки. Для этого необходимо тоже поменять значение свойства у компонентов, но уже отвечающее не за надпись, а за цвет. Оно получило название Color (переводится как цвет).
5. Выберите форму и найдите свойство Color на вкладке Propertes окна Инспектор объектов. Цвет фона компонентов выбирается с помощью выпадающего списка (рисунок 9). В нём расположена картинка с текущим цветом и его названием на английском языке. Заметьте, что перед названием стандартного цвета, всегда ставятся две буквы — cl (сокращённо Color).
6. Откройте меню выбора цвета. Для этого нажмите мышью на стрелочку вниз, находящуюся справа, и выберите ярко-жёлтый цвет (clYellow).
В результате наших действий вся форма окрасится в ярко-зелёный цвет.
7. Поменяйте цвет фона метки Label1 на белый (clWhite).
В результате у вас получится нечто вроде рисунка 10.
Отметим один досадный факт: цвет фона кнопки и цвет текста на кнопке изменить нельзя!
МЕНЯЕМ ШРИФТ
За изменения параметров шрифта отвечает свойство Font.
8. Выделите кнопку (Button1) и найдите свойство Font на вкладке Propertes окна Инспектор объектов (рисунок 11а).
а)б)
Рисунок 11. Изменение свойств шрифта9. Нажмите на кнопку с изображением трёх точек справа и выберите через стандартное диалоговое окно Шрифт (рисунок 11б), начертание шрифта — жирный, размер — 14 пт.
10. Для метки (Label1): установите размер шрифта — 24 пт, цвет шрифта — красный.
11. Теперь запустите приложение и полюбуйтесь.
Всё! Поздравляем вас с созданием первого приложения, работающего под управлением ОС Windows. Оно выполняет очень полезные функции — приветствует весь мир и говорит о том, что кнопка, расположенная ниже надписи — ваша. Но это уже философия…
5. Коротко о главном
- После создания нового проекта его сразу же необходимо сохранить в отдельную папку.
- Приложение удобно запускать нажатием на клавишу F9 или щёлкнув по пиктограмме на панели инструментов.
- Компоненты, помещённые на форму, можно перемещать и изменять их размеры.
- Свойство Name и свойство Caption компонента могут совпадать, но это два абсолютно разных свойства.
- Параметры шрифта лучше выбирать с помощью стандартного диалогового окна Шрифт.
6. Выполнение заданий:
Особенности задания
Создайте форму по образцу. Опишите компоненты, размещенные на форме, и их свойства.
Delphi XE2 и VCL Styles.
Включаем поддержку стилей в проекте Delphi
Project -> Options -> Application -> Apperance
Для каждого выбранного стиля можно выполнить предварительный просмотр. Для этого необходимо выбрать стиль в списке и нажать «Preview…»:
После того, как выбраны необходимые стили их можно будет использовать в программе, а также выбрать стиль, который будет использоваться в программе по умолчанию. Здесь сразу может возникнуть вопрос у читателей, которые дорожат размером своих программ: на сколько возрастет размер EXE-файла при включении стилей?Класс TStyleManager
Методы класса TStyleManager
Свойства класса TStyleManager
- TButtonedEdit
- TOpenDialog
- и несколько меток TLabel для вывода информации по стилю.

Где взять файлы со стилями VCL? Все имеющиеся в Delphi XE2 стили располагаются в директории:c:\Program Files\Embarcadero\RAD Studio\9.0\Redist\styles\vcl\…
Tools -> VCL Style Designer

Файл с изображение будет иметь название style.png и выглядеть следующим образом:
Как и при работе со стилями в Ribbon Controls в этом изображении содержатся все необходимые элементы для прорисовки форм и компонентов в приложении с VCL. Например, два элемента в верхнем левом углу изображения отвечают за отрисовку активной и неактивной формы.
3. Сохраняем полученный файл. И импортируем его обратно в редактор. Для этого в редакторе выбираем «Image -> Update»
Если после обновления изображения стиль остался прежним, то необходимо в главном меню редактора выбрать «Style -> Assign Colors» и снова нажать F9.Работа со свойствами объектов в редакторе стилей
- BorderTitleStyle = tsTile
- TitleStyle = tsTile
- MarginLeft = 22
- MarginRight = 5
Вот заголовок формы уже приобретает более менее «товарный» вид. Осталось только назначить цвет шрифта, чтобы заголовок формы не сливался с основным цветом. Для этого в дереве объектов ищем раздел Fonts и меняем свойства у объектов CaptionTextNormal и CaptionTextInactive:Сам я новый компилятор пока не щупал, но судя по новинкам — Embarcadero молодцы
а как применить стиль только к одному контролу? ну или использовать методы стилей для кастомной отрисовки например пэйджконтролов,
DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

В приложениях, разработанных для Windows, для взаимодействия с пользователем очень часто используются диалоговые окна. Вы можете не только применять обычные диалоговые окна, но и создавать свои собственные окна. Обычные диалоговые окна будут рассмотрены далее в этой книге.
Диалоговое окно представляет собой не что иное, как специальную форму. Если вы хотите иметь диалоговое окно, размеры которого нельзя будет изменить, и которое не имеет пиктограммы в строке заголовка (рис. 12.20). вам достаточно будет присвоить свойству BorderStyle значение bsDialog.
Рис. 12.20. Диалоговое окно bsDialog

Чтобы создать диалоговое окно (такое, например, как диалоговое окно Project Options), размеры которого можно будет изменять, или которое будет иметь пиктограмму в строке заголовка, выполните следующие действия:
- Присвойте свойству biSystemMenu группы Borderlcons значение True.
- Присвойте свойству BorderStyle значение bsSizeable или bsSingle.
- При желании можете присвоить свойству Position значение poScreen-Center, чтобы расположить форму в центре экрана.
Диалоговые окна обычно являются модальными формами, используемыми для получения дополнительной информации от пользователя. Диалоговые окна должны содержать как минимум две кнопки: ОК и Cancel (Отмена). Кнопка ОК используется для подтверждения завершения работы в диалоговом окне, а кнопка Cancel служит для отмены действий, выполненных в диалоговом окне. Действие обеих кнопок приводит к закрытию окна.
Теперь давайте создадим диалоговое окно, которое позволит пользователю изменять цвет главной формы. Добавьте компонент TLabel и два компонента TButton. и измените их примерно так. как показано на рис. 12.21.
Рис. 12.21. Простое диалоговое окно

Нам необходимо изменить свойство ModalResult кнопок ОК и Cancel. Присвойте свойству ModalResult кнопки ОК значение гглгОК, а свойству ModalResult кнопки Cancel — значение mrCancel. Свойство ModalResult позволяет сделать одновременно две вещи: закрыть диалоговое окно и уведомить вызывающий объект о том. что пользователь выбрал ОК. Cancel или что-то еще. Когда пользователь щелкает на кнопке с модифицированным свойством ModalResult. то значение этого свойства будет автоматически присвоено свойству ModalResult диалогового окна. Поэтому, чтобы узнать, на какой кнопке щелкнул пользователь, мы должны проверить свойство ModalResult диалогового окна.
Код в листинге 12.19 показывает, как с помощью диалогового окна разрешить пользователю изменять цвет главной формы.
-
-