1. Задание

1.1. Общее задание по вариантам

Разработать элемент управления, предназначенный для редактирования сложных данных (варианты по группам):

  1. комплексных чисел;

  2. коэффициентов квадратного уравнения;

  3. длин сторон треугольника.

1.2. Специальные требования к элементу управления

1. Элемент управления должен позволять вводить и изменять данные и при нажатии клавиши Enter получать следующие результаты:

  1. модуль и аргумент комплексного числа;

  2. дискриминант и корни квадратного уравнения;

  3. площадь треугольника.

2. В конструкторе должна происходить установка значений, при которых поставленная задача решается:

  1. Дано: z=4+3i. Ответ: |z|=5,

    =36.87 градусов;

  2. Дано: 2x2+3x-14=0. Ответ: D=11, x1=2, x2=3,5;

  3. Дано: a=3, b=4, c=5. Ответ: S=6.

3. При нажатии клавиши Esc должна происходить установка значений по умолчанию (устанавливаемых конструктором).

4. При невозможности получения результата должно происходить специальное событие. Причинами невозможности вычисления являются (по вариантам):

  1. переполнение аргумента комплексного числа;

  2. отрицательный дискриминант;

  3. неразрешимость треугольника.

5. Все результаты вычислений должны являться свойствами класса.

6. После вычисления результатов должно происходить пользовательское событие, параметрами которого являются сам компонент и результаты решения задачи.

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

1.3. Требования к интерфейсу тестового приложения

Тестовое приложение должно содержать на главной форме собственно разрабатываемый компонент и никаких дополнительных кнопок, нажатие которых запускало бы вычисления.

Все вычисления должны осуществляться только внутри компонента, а результаты передаваться в программу в обработчиках событий.

Передаваемые результаты должны отображаться в пассивных компонентах (например, TLabel, TStaticText и т.п.)