Простые свойства - это те, значения которых являются числами или строками. Например, свойства Left и Top принимают целые значения, определяющие положение левого верхнего угла компонента или формы. Свойства Caption и Name (из примера прошлого урока) представляют собой строки и определяют заголовок и имя компонента или формы.
Перечислимые свойства - это те, которые могут принимать значения из предопределенного набора (списка). Простейший пример - это свойство типа Boolean, которое может принимать значения True или False (истинно или ложно). Например свойство Enabled для кнопки Button будет означать, моо5т ли пользователь или нет нажать на нее. Если установлено False, то кнопка становится серой, недоступной. Т.е. свойство кнопки Enabled может принитать только два значения и не более.
Вложенные свойства - это те, которые поддерживают вложенные значения (или объекты). Object Inspector изображает знак "+" слева от названия таких свойств. Имеется два вида таких свойств: множества и комбинированные значения. Object Inspector изображает множества в квадратных скобках. Если множество пусто, оно отображается как []. Установки для вложенных свойств вида "множество" обычно имеют значения типа Boolean. Наиболее распространенным примером такого свойства является свойство Style с вложенным множеством булевых значений. Комбинированные значения отображаются в Инспекторе Объектов как коллекция некоторых величин, каждый со своим типом данных. Некоторые свойства, например, Font, для изменения своих значений имеют возможность вызвать диалоговое окно. Для этого достаточно щелкнуть маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство.
Delphi позволяет легко
манипулировать свойствами компонента как в
режиме проектирования, так и в режиме выполнения
программы соответственно программно.
В
режиме проектирования манипулирование
свойствами осуществляется с помощью Дизайнера
Форм (Forms Designer или как говорилось выше
проектировщик форм) или, как Вы уже видели, на
страничке "Properties" Инспектора
Объектов. Например, для того чтобы изменить
свойства Height (высоту) и Width
(ширину) кнопки, достаточно "зацепить" мышкой за
любой ее угол и раздвинуть до нужного
представления. Того же результата можно
добиться, просто подставив новые значения
свойств Height и Width в окне Object
Inspector.
С другой стороны, в режиме выполнения
пользователь (программист) имеет возможность не
только манипулировать всеми свойствами,
отображаемыми в Инспекторе Объектов, но и
управлять более обширным их списком. В следующем
разделе мы рассмотрим, как это делается.
Управление свойствами
визуальных компонентов в режиме выполнения
Все изменения значений свойств компонент в
режиме выполнения должны осуществляться путем
прямой записи строк кода на языке Паскаль. В
режиме выполнения невозможно использовать Object
Inspector. Хотя добраться до него возможно и возможно
поменять его, но изменения вступят в силу только
после перекомпиляции проекта.
Компиляция - это процесс перевода вашей
программы в машинный код. В данном случае это
процесс создания исполняемого EXE файла.
Однако, доступ к свойствам компонентов довольно
легко получить программным путем. Все, что вы
должны сделать для изменения какого-либо
свойства - это написать простую строчку кода в
редакторе кода аналогично следующей:
Component.Width := 40;
где Component - интересующий вас компонент.
Например Button1. Название компонента
указано в свойстве Name.
Вышеприведенная строка устанавливает ширину (Width)
компонента в значение 40 пикселей. Если свойство Width
компонента еще не было равно 40 к моменту
выполнения данной строки программы, Вы увидите,
как компонент визуально изменит свою ширину.
Естественно, что изменить просто так свойство
нельзя. Его надо изменять только в ответ на
какое-либо событие. Например на клик мышкой по
кнопке. Для этого создается одноименная
процедура обработки события. Рассмотрим пример.
Разместим в проектировщике форм Form1
кнопку Button1. Напишем реакцию на событие
нажатия по этой кнопке.
Подробнее о реакциях на событие можно прочитать
в уроке №2.
Запускаем Delphi. В меню File выбираем New
Application. Открывается новый проект. В
проектировщике форм устанавливаем кнопку Button.
Выделяем ее одинарным щелчком мыши. Здесь и далее
для того, чтобы добраться до свойств
необходимого объекта, нужно выделить его.
Свойства выделенного немедленно отображаются в Object
Inspector. Установим свойство Width для
кнопки Button1 равное 200. Кнопка немедленно
расширяется на заданную ширину. Теперь установим
другую ширину для этой же кнопки, но уже
программно. Переключаем Object Inspector на
страницу Events (события). Мы видим полный
перечень доступных во время выполнения событий
для этой кнопки. Нас интересует реакция на
событие нажатия On Click. Необходимо
создать процедуру обработки этого нажатия, иначе
это действие будет проигнорировано программой.
Дважды щелкаем мышкой в поле, правее надписи On
Click или нажимаем на Ctrl+Enter. Delphi
автоматически создает заголовок процедуры
обработки события.
procedure TForm1.Button1Click(Sender: TObject);
begin
end;
Курсор установлен между операторными скобками begin
и end. Это означает, что весь текст
программы, относящийся к реакции на данное
событие должно быть размещено только между ними.
Набираем строку:
Button1.Width:=40;
Запускаем программу на выполнение (F9). Смотрим на
результат своей работы.
Object Inspector является удобным способом
выполнения в режиме проектирования того, что
может быть осуществлено программным путем в
режиме выполнения. Заданные свойства объектов
считаются начальными и присутствуют на момент
запуска программы. Более того, как уже было
сказано выше, у компонента могут быть свойства,
не отображаемые в окне Инспектора Объектов,
которые доступны только в момент выполнения
программы.
Часть урока для
продвинутых программистов
В прошлом уроке мы рассматривали компонент F1Book,
который применяется для организации работы,
наподобие программы MSExcel. В этом уроке
мы остановимся на непосредственной работе с
упомянутой программой.
Если у вас установлен Delphi 5, то его
нововведением было появление закладки Servers на
палитре компонентов. Но можно и без участия этих
компонентов получать доступ к программам групп MS
Office.
Рассмотрим пример организации отчета в Excel.
Пример можно скачать здесь.
Для начала скажу, что если вы хотите создавать в Excel
что-нибудь серьезное, то вам необходимо неплохо
ореинтироваться на VBA, в число которых я
не вхожу. Но важна сама идея.
Создаем OLE объект:
ExcelApplication := CreateOleObject ('Excel.Application');
где ExcelApplication - переменная типа Variant.
Не забудьте объявить в разделе подключаемых
модулей ComObj.
Далее вся работа сводится к посылке сообщений к
созданному приложению Excel.
Данную методику можно применять как замену
различным отчетам типа Report.
Преимущества налицо.