Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Задание СветофорСтр 1 из 3Следующая ⇒
Цель работы - создать программу, выполняющую следующие действия:
1. После запуска программы в окне изображается светофор с тремя лампочками, способными реагировать на наведение указателя мыши. 2. Когда указатель мыши наведен на лампочку, она меняет свой цвет.
Рис. 34.
3. Для выхода из программы необходимо щелкнуть мышью на закрывающей кнопке в строке заголовка. Описание плана разработки программы 1. Открыть новый проект. 2. Разместить на форме экземпляры компонентов: фигура Shape. 3. Выполнить следующие действия: Таблица 14.
Продолжение таблицы 14.
4. Написать функцию OnShape, которая вызывается из процедуры FormMouseMove. 5. Работа функции определяет следующие события: Если указатель мыши не наведен на лампочку, то ее цвет будет прозрачным. Если указатель мыши наведен на лампочку, то ее цвет будет соответствовать цветам светофора. r: = sh.Width div 2; {r - радиус фигуры} cx: = sh.Left + r; {cx, cy - координаты центра фигуры} cy: = sh.Top + r; d2: = (X - cx) * (X - cx) + (Y - cy) * (Y - cy); {d2 - квадрат расстояния от центра} OnShape: = bsClear; {указатель мыши не наведен на лампочку, т.е. находиться за пределами фигуры} if d2 > r*r then ObShape: = bsSolid; {указатель мыши наведен на лампочку, т.е. находиться внутри фигуры} 6. Выравнивание элементов: 1) Выделить все три фигуры. 2) Выбрать команду Edit — Align (Правка — Выровнить). 3) Откроется диалоговое окно Alignment (Выравнивание). 4) Установить слева переключатель Center in Window (Центрировать в окне). 5) Установить справа переключатель Space Equally (С равными промежутками). 6) Щелкнуть на кнопке OK. 7. Сохраните проект, запустите и протестируйте его. Листинг подпрограммы Function OnShape (sh: TShape: X, Y: Integer): TBrushStyle; var r, cx, cy, d2: Integer; begin r: = sh.Width div 2; cx: = sh.Left + r; cy: = sh.Top + r; d2: = (X - cx) * (X - cx) + (Y - cy) * (Y - cy); OnShape: = bsClear; if d2 > r*r then ObShape: = bsSolid; end; procedure TForm1.FormMouseMove (Sender: TObject, Shift: TShiftState; X, Y: Integer);); begin Shape1.Brush.Color: = clRed; Shape1.Brush.Style: = OnShape (Shape1, X, Y); Shape2.Brush.Color: = clYellow; Shape2.Brush.Style: = OnShape (Shape2, X, Y); Shape3.Brush.Color: = clLime; Shape.Brush.Style: = OnShape (Shape3, X, Y); end;
|