Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ответы на экзаменационные вопросы_2007.doc
Скачиваний:
111
Добавлен:
26.09.2019
Размер:
4.91 Mб
Скачать
  1. Управление свойствами визуальных компонент в процессе выполнения.

Все изменения значений свойств компонент в режиме выполнения должны осуществляться путем прямой записи строк кода на языке Паскаль. В режиме выполнения невозможно использовать Object Inspector. Однако, доступ к свойствам компонентов довольно легко получить программным путем. Необходимо сделать для изменения какого-либо свойства - это написать простую строчку кода аналогично следующей:

MyComponent.Width := 35;

Вышеприведенная строка устанавливает ширину (Width) компонента в значение 35. Если свойство Width компонента еще не было равно 35 к моменту выполнения данной строки программы, компонента визуально изменит свою ширину в процессе выполнения программы.

Пример

Программа SHAPEDEM содержит всего лишь объект TShape, размещенный на форме, вместе с двумя полосами прокрутки и несколькими кнопками. Эта программа интересна тем, что позволяет в режиме выполнения изменять размер, цвет и внешний вид объекта TShape, равно как размер и цвет самой формы.

Полосы прокрутки (ScrollBars) используются для изменения размера фигуры, изображенной в средней части экрана. Для выбора нового вида фигуры используйте выпадающий список (ComboBox), а для изменения цвета фигуры или окна (формы) используйте стандартное диалоговое окно выбора цвета, вызываемое кнопками “Цвет фигуры” и “Цвет формы”.

Что нужно сделать пользователю (программисту) для того чтобы получить возможность “в режиме выполнения” изменять цвет какого-либо элемента или всего окна (формы)? Для этого достаточно выполнить всего лишь несколько действий. Для изменения цвета окна просто выберите компонент ColorDialog из палитры компонентов (она находится на страничке “Dialogs”) и поместите его на форму. Кроме того, поместите на форму обычную кнопку (компонент Button, находится на страничке “Standard”). Для удобства чтения с помощью Object Inspector измените имя компонента (свойство Name) с “Button1” (которое дается по умолчанию) на “FormColor”, а его заголовок (свойство Caption) - на “Цвет формы”. Дважды щелкните по кнопке “Цвет формы” - Delphi сгенерирует заготовку метода, который выглядит следующим образом:

procedure TForm1.FormColorClick(Sender: TObject);

begin

end;

Теперь введите две простые строчки кода:

procedure TForm1.FormColorClick(Sender: TObject);

begin

if ColorDialog1.Execute then

Form1.Color := ColorDialog1.Color;

end;

Данный код во время выполнения при нажатии кнопки “Цвет формы” вызывает стандартное диалоговое окно выбора цвета, как показано на рис.6.Если в этом диалоговом окне Вы щелкните кнопку OK, выполнится следующая строка:

Form1.Color:=ColorDialog1.Color;

Этот код установит свойство Color формы Form1 в цвет, который был выбран с помощью диалогового окна ColorDialog1. Это очень просто!!!

Та же самая техника может использоваться для изменения цвета фигуры (компонент Shape, объект TShape). Все, что Вам нужно сделать - это поместить на форму другую кнопку, изменить (при желании) ее имя на “ShapeColor”, а заголовок - на “Цвет Фигуры”, дважды щелкнуть по ней мышкой и создать метод аналогичный следующему:

procedure TForm1.ShapeColorClick(Sender: TObject);

begin

if ColorDialog1.Execute then

Shape1.Brush.Color := ColorDialog1.Color;

end;

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

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

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

Для начала, поместите два компонента ScrollBar на форму (находится на страничке “Standard”) и установите свойство Kind первого компонента в sbHorizontal, а второго - в sbVertical. Переключитесь на страничку “Events” в Инспекторе Объектов и создайте заготовки метода для отклика на событие OnChange для каждой полосы прокрутки. Напишите в каждом из методов по одной строчке следующим образом:

procedure TForm1.ScrollBar1Change(Sender: TObject);

begin

Shape1.Width := ScrollBar1.Position * 3;

end;

procedure TForm1.ScrollBar2Change(Sender: TObject);

begin

Shape1.Height := ScrollBar2.Position * 2;

end;

Код, показанный здесь, устанавливает свойства Width и Height фигуры TShape в соответствие с положением “бегунка” на полосах прокрутки (сомножители 3 и 2 введены только для лучшего представления).

Последняя часть программы SHAPEDEM демонстрирует большие возможности языка Object Pascal, на основе которого построен Delphi. Вы можете ввести элементы в список компонента ComboBox как в режиме проектирования, так и при выполнении программы. При этом в режиме проектирования Вы можете просто ввести нужные элементы в список Items, щелкнув маленькую кнопку с тремя точками в правой части строки Инспектора Объектов, показывающей данное свойство (Items).