Разработать элемент управления, предназначенный для редактирования сложных данных (варианты по группам):
комплексных чисел;
коэффициентов квадратного уравнения;
длин сторон треугольника.
1. Элемент управления должен позволять вводить и изменять данные и при нажатии клавиши Enter получать следующие результаты:
модуль и аргумент комплексного числа;
дискриминант и корни квадратного уравнения;
площадь треугольника.
2. В конструкторе должна происходить установка значений, при которых поставленная задача решается:
Дано: z=4+3i. Ответ: |z|=5,
=36.87 градусов;
Дано: 2x2+3x-14=0. Ответ: D=11, x1=2, x2=3,5;
Дано: a=3, b=4, c=5. Ответ: S=6.
3. При нажатии клавиши Esc должна происходить установка значений по умолчанию (устанавливаемых конструктором).
4. При невозможности получения результата должно происходить специальное событие. Причинами невозможности вычисления являются (по вариантам):
переполнение аргумента комплексного числа;
отрицательный дискриминант;
неразрешимость треугольника.
5. Все результаты вычислений должны являться свойствами класса.
6. После вычисления результатов должно происходить пользовательское событие, параметрами которого являются сам компонент и результаты решения задачи.
7. В тестовом приложении предусмотреть обработчики всех событий вычисления результатов и вывод их в элементы управления, размещенные на форме.
Тестовое приложение должно содержать на главной форме собственно разрабатываемый компонент и никаких дополнительных кнопок, нажатие которых запускало бы вычисления.
Все вычисления должны осуществляться только внутри компонента, а результаты передаваться в программу в обработчиках событий.
Передаваемые результаты должны отображаться в пассивных компонентах (например, TLabel, TStaticText и т.п.)