
- •Введение
- •Лабораторная работа 1. Элементы интерфейса Delphi
- •Лабораторная работа 2. Разработка первого проекта
- •Лабораторная работа 3. Разработка проекта «Диалог»
- •Лабораторная работа 4. Разработка проекта «Справочник»
- •Лабораторная работа 5. Разработка проекта «Словарь»
- •Лабораторная работа 6. Разработка проекта «Ваш вес»
- •Лабораторная работа 7. Разработка проекта «Цвета в формате rgb»
- •Лабораторная работа 8. Разработка проекта «Тест по физике»
Лабораторная работа 7. Разработка проекта «Цвета в формате rgb»
Постановка задачи.
Создать программу, с помощью которой пользователь мог бы увидеть в зависимости от значений насыщенности красного, зеленого и синего цветов результирующий цвет (рис.14).
Пояснение. Новым в этой работе будет использование:
полос прокрутки ScrollBar для ввода данных,
функции преобразования значений цветовых составляющих TColorRef.
План разработки программы
Открыть новый проект.
Разместить на форме экземпляры компонентов в соответствии с рис.15.
Рис. 16. Рис. 17.
Полоса прокрутки ScrollBar может быть горизонтальной (по умолчанию) или вертикальной. Это определяется свойством Kind. В нашем случае используется вертикальная полоса прокрутки.
Сохранить код программы и проект под именами, например, unit6.pas и pr6.dpr.
Выполнить следующие действия:
-
Выделенный
объект
Вкладка окна Object Inspector
Имя свойства
Действие
ScrollBarl
Properties
Name
Установка имени полосы прокрутки «RedBar», под которым компонент будет известен программе.
Max
Установка максимального количества градаций компонента RGB:255
Position
Установка начального значения:122
Аналогично задать значения для ScrollBar2 и ScrollBar3, присвоив им имена «GreenBar» и «BlueBar»
Для всех компонентов формы установите значение свойства Caption
Выполнить следующие действия:
-
Выделенный объект
Вкладка окна Object Inspector
Имя свойства/события
Действие
RedBer
Events
OnChange
Panell.Color:=TColorRef(RGB
(RedBar.Position,0,0);
Label.Caption:=IntToStr(RetBer.
Position);
Pane14.Color:= TcolorRef(RGB
(RedBer.Position,GreenBar
Position, BlueBar.Position));
Аналогично задать значения для ScrollBar2 и ScrollBar3, проследить за правильностью записи параметров функций RGB и IntToStr.
Пояснение. В зависимости от передвижения ползунка ScrollBar1 ,будет меняться цвет Panel1, выводиться числовое значение кода на месте Label1 и меняться цвет Panel4.
Сохранить проект, запустить и протестировать его.
Задание для самостоятельного выполнения.
Поместить на форму кнопку выхода из программы.
Предусмотреть, чтобы после запуска программы устанавливались начальные цвета панелей в зависимости от исходных значений ползунков.
Подсказка. Предусмотреть в реакции на событие OnCreate для формы Form1 обработку значений ScrollBar1, ScrollBar2 и ScrollBar3.
Внести в программу изменения, чтобы значение кода цвета выводилась не только в десятичной, но и в шестнадцатеричной системе счисления.
Листинг программы
Unit Unit6;
interface
…
private
(Private declarations)
public
(Public declarations)
end;
var
Form1: TForm1;
Implementation
{SR*.DFM}
procedure TForm1.RedBarChange(Sender:TObject);
begin
Pane11.Color:=RGB(RedBar. Position,0,0);
Labe11.Caption:=IntToStr(RedBar.Position);
Labe14.Caption:=Format( ́0x%x ́,[RedBar.Position]);
Pane14.Color:=RGB(RedBar.Position, GreenBar.Position,BlueBar.Position);
end;
procedure TForm1.BlueBarChange (Sender: TObject);
begin
Pane12.Color:=RGB(0,GreenBar.Position,,0);
Labe12.Caption:=IntToStr(GreebBar.Position);
Labe15.Caption:=Format(‘0x%x’, [GreenBar.Position]);
Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);
end;
procedure TForm1.BlueBarChange(Sender:TObject);
begin
Pane13.Color:=RGB(0,0,BlueBar.Position);
Labe13.Caption:=IntToStr(BlueBar.Position);
Labe16.Caption:=Format(‘0x%x’,[BlueBar.Position]);
Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Labe14.Caption:=Format(‘0x%x’,[RedBar.Position]);
Labe15.Caption:=Format(‘0x%x’,[GreenBar.Position]);
Labe16.Caption:=Format(‘0x%x’,[BlueBar.Position]);
Pane11.Color:=RGB(RedBar.Position,0,0);
Labe11.Caption:=IntToStr(RedBar.Position);
Pane12.Color:=RGB(0,GreenBar.Position,0);
Labe12.Caption:=IntToStr(GreenBar.Position);
Pane13.Color:=RGB(0,0,BlueBar.Position);
Labe13.Caption:=IntToStr(BlueBar.Position);
Pane14.Color:=RGB(RedBar.Position,GreenBar.Position,BlueBar.Position);
end;
end.