- •Лабораторная работа №3. Тема: Создание простейшего приложения «Светофор» Цель: Изучение компонентов Button, Shape, Bevel, Edit, Label.
- •В обработчике события OnClick для кнопки Button1 напишем код:
- •Создание игры «Поймай кнопку» Цель: Изучение особенностей компонента Timer.
- •Тема: Создание логической игры Цель: Изучение возможностей использования свойства Tag и объекта Sender.
- •Генератор функций Цель: Изучение компонента PaintBox и методов рисования на канве. Компонент TrackBar
- •2. Сделайте так, чтобы в неинвертированном режиме синусоида изображалась красным цветом, а косинусоида – синим.
- •Создание простейшего калькулятора Цель: Изучение структуры case и особенностей работы с математическими функциями. Преобразование типов и обработка исключительных ситуаций.
- •Создание элементов интерфейса простейшего графического редактора Цель: Изучение компонентов ColorGrid, SpinEdit, RadioGroup, ListBox, ColorDialog.
- •Часть 1.
- •Часть 2.
- •Увеличить фигуру
- •Электронная записная книжка Цель: Изучение компонентов многостраничных панелей TabControl и PageControl.
- •Текстовый редактор Цель: Изучение компонентов Panel, Memo, OpenDialog, SaveDialog, MainMenu, PopupMenu, SpeedButton
- •Создание простейшего графического редактора
- •События мыши
Создание элементов интерфейса простейшего графического редактора Цель: Изучение компонентов ColorGrid, SpinEdit, RadioGroup, ListBox, ColorDialog.
Краткие теоретические сведения.
ColorGrid - пример компонента, используемого для создания таблицы цветов, в которой пользователь выбирает требуемый цвет. Компонент визуальный. Свойство GridOrdering определяет внешний вид сетки (количество строк и столбцов). Свойство ForegroundColor определяет цвет, выбранный пользователем левой клавишей, BackgroundColor - правой.
SpinEdit - окно редактирования в комбинации с кнопкой-счетчиком. Свойства MinValue и МахValue компонента задают соответственно минимальное и максимальное значения чисел, свойство Increment задает приращение числа при каждом нажатии на кнопку. Свойство Value определяет текущее значение числа. Это свойство можно читать, чтобы узнать, какое число задал пользователь.
Радиокнопки образуют группы взаимосвязанных индикаторов, из которых обычно может быть выбран только один. Компонент RadioGroup — панель группы радиокнопок, которая может содержать регулярно расположенные столбцами и строками радиокнопки. Надпись в левом верхнем углу панели определяется свойством Caption. А надписи кнопок и их количество определяются свойством Items, имеющим тип TStrings. Щелкнув на кнопке с многоточием около этого свойства в окне Инспектора Объектов, вы попадете в редактор списков строк. В нем вы можете занести надписи, которые хотите видеть около кнопок, по одной в строке. Сколько строчек вы запишете — столько и будет кнопок.
Определить, какую из кнопок выбрал пользователь, можно по свойству ItemIndex, которое показывает индекс выбранной кнопки. Индексы, как всегда в Delphi, начинаются с 0. По умолчанию ItemIndex = -1, что означает отсутствие выбранной кнопки.
Компонент ListBox отображает списки строк. ListBox отображает список в раскрытом виде и автоматически добавляет в список полосы прокрутки, если все строки не помещаются в окне компонента.
Основное свойство компонента, содержащее список строк, — Items, имеющее тип TStrings. Заполнить его во время проектирования можно, нажав кнопку с многоточием около этого свойства в окне Инспектора Объектов. Во время выполнения работать с этим свойством можно, пользуясь свойствами и методами класса TStrings — Clear, Add и другими. Номер выбранной строки можжно узнать из свойства ItemIndex. Если ни одна строка не выбрана, то ItemIndex = -1.
Компонент ColorDialog вызывает диалоговое окно выбора цвета. Основное свойство компонента ColorDialog — Color. Это свойство соответствует тому цвету, который выбрал в диалоге пользователь.
Ход работы
Часть 1.
1. Создайте новый проект и сохраните его в своей папке.
Поместите на форму компонент Shape (палитра Aditional) и ColorGrid (палитра Samples). Свойству Shape компонента Shape присвоить значение stRectangle. Свойству GridOrdering компонента ColorGrid присвоить значение go8x2.
Расположить компоненты на форме следующим образом:
2. Создадим обработчик события OnChange компонента ColorGrid
Shape1.Pen.Color:=ColorGrid1.ForegroundColor;
Shape1.Brush.Color:=ColorGrid1.BackgroundColor;
Запустим программу и посмотрим как она работает. Левым щелчком по палитре выбирается цвет контура (передний цвет), правым – цвет фона (задний цвет).
3. Используя компонент SpinEdit (палитра Samples) создадим возможность изменения толщины контура от 1 до 50.
Свойству MaxValue зададим значение 50, MinValue – 1
В обработчике события OnChange компонента SpinEdit запишем:
shape1.Pen.Width:=SpinEdit1.Value;
Расположим компонент Label (свойство Caption – Контур) и SpinEdit, как это показано на рисунке ниже.
4. Расположим на форме компонент RadioGroup.
Присвоим его свойству Captions и свойству Items (содержит названия строк списка) значения, как это показано на рисунке ниже. Сделаем так, чтобы по умолчанию был выбран первый компонент списка. Для этого свойству ItemIndex компонент а RadioGroupзададим значение 0 (нумерация в списке начинается с нуля)
5. В обработчике OnClick для RadioGroup1 запишем:
if RadioGroup1.ItemIndex=0 then Shape1.Shape:=stCircle; {если выбран первый элемент списка}
if RadioGroup1.ItemIndex=1 then Shape1.Shape:=stEllipse;
if RadioGroup1.ItemIndex=2 then Shape1.Shape:=stRoundRect;
if RadioGroup1.ItemIndex=3 then Shape1.Shape:=stRoundSquare;
if RadioGroup1.ItemIndex=4 then Shape1.Shape:=stSquare;
6. Расположим на форме компоненты Label (свойство Caption – Способ заливки) и компонент ListBox. В Редакторе списка строк компонента ListBox (вызывается щелчком по свойству Items) введите значения, как это показано на рисунке выше.
7. В обработчик OnClick компонента ListBox введем следующий код:
if ListBox1.Selected[0] then Shape1.Brush.Style:=bsSolid;
if ListBox1.Selected[1] then Shape1.Brush.Style:=bsClear;
if ListBox1.Selected[2] then Shape1.Brush.Style:=bsBDiagonal;
if ListBox1.Selected[3] then Shape1.Brush.Style:=bsFDiagonal;
if ListBox1.Selected[4] then Shape1.Brush.Style:=bsCross;
if ListBox1.Selected[5] then Shape1.Brush.Style:=bsDiagCross;
if ListBox1.Selected[6] then Shape1.Brush.Style:=bsHorizontal;
if ListBox1.Selected[7] then Shape1.Brush.Style:=bsVertical;
Запустим программу и посмотрим как она работает.