Деструктор. Стирает изображение объекта на изображении.

1.1.Создать свой класс (MyClass) согласно варианту задания в отдельном модуле, предусмотрев в нем:

– Конструктор (Указатель на Image, X, Y). Конструктор инициализирует указатель на изображение, внутренние координаты размещения объекта на изображении. Производит отображение объекта на изображении.

– Деструктор. Стирает изображение объекта на изображении.

boolIsSelected (intX, intY). Функция возвращает истину, если указанная точка (X,Y) принадлежит объекту.

– Mark(bool h). Отображает объект в выделенном состоянии (h=true), иначе – в невыделенном.

1.2. Разместить на главную форму приложения Image1, кнопки с заголовками «Добавить» и «Удалить». Для этого рекомендуется использовать кнопки TSpeedButton. Обе созданные кнопки выделить, установить для них общие свойства: GroupIndex=1, AllowAllUp=false. В результате только одна кнопка из двух может быть в нажатом состоянии или обе кнопки отжаты.

Для хранения массива указателей на динамические объекты созданного класса используйте в классе формы массив:

Описание класса формы TForm1:

private:

 MyClass *p[10];

 

В конструкторе формы присвойте значение NULL каждому из указателей p[i].

При добавлении нового объекта осуществите поиск первого указателя, равного NULL (в цикле).

MouseDown для Image1:

if (SpeedBtn1.Down) // кнопка «Добавить» нажата

{ for (int i=0; i<10; i++)

  if (p[i] = = NULL)

  {p[i]=new MyClass(Image1, X, Y); break;}

return;}

 

if (SpeedBtn2.Down) // кнопка «Удалить» нажата

{ for (int i=0; i<10; i++)

  if (p[i].IsSelected(X,Y)) //мышь попала по объекту

  {deletep[i]; p[i]=NULL; break;} //после delete важно обнулить указатель!

return;}

В деструкторе формы (onDestroy) произведите очистку всех p[i].

 

1.      Выделение/сброс выделения объектов

2.1.Если объект необходимо выделить, вызовите для него метод p[i]->Mark(true).

2.2.В обработчике нажатия MouseDown для Image1 проверьте факт нажатия на Shift – признак группового выделения.

2.3. В итоге реализуйте выбор объектов аналогично тому, как это происходит в среде Windows (c учетом Shift).

2.      Реализация перегруженных и дополнительных функций класса.

3.1. В соответствии с задачей разместите кнопки и поля ввода для вызова соответствующих функций класса.

3.2. Дополните свой класс этими функциями, осуществите связи между кнопками и вызовами функций для выделенного на Image1 объекте (группе объектов). При этом около используемого объекта должен загораться флаг, соответствующий выполненной функции (например, красная точка при вызове конструктора).

Ссылка на основную публикацию
Adblock detector