0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|||||||||||
1 | |||||||||||
Создание наследника класса TImage22.03.2014, 11:23. Показов 2106. Ответов 11
Метки нет Все метки)
(
Добрый день. С билдером знаком не так давно и его синтаксис понимаю не так хорошо, как хотел бы.
Возникла задача расширить функции базового класса TImage чтобы он мог, например, хранить числовую информацию, иметь собственный метод OnClick, выполняющий определённую функцию. В коде, создаётся и выводится на Form1 массив элементов класса-наследника. файл .h
Не совсем понимаю какой должен быть конструктор для такого класса. Заранее спасибо.
0
|
|
22.03.2014, 11:23 | |
Ответы с готовыми решениями:
11
Создание класса-наследника TImage
Создание класса на основе TImage
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
22.03.2014, 15:59 | 2 | |||||
![]() Решение
1
|
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|
22.03.2014, 18:38 [ТС] | 3 |
Maluda, спасибо, всё заработало.
Я бы хотел узнать ещё одну вещь, я понимаю как задать действия для стандартного OnClick класса TImage, но как в моём классе-наследнике реализовать свой OnClick, который выполнял бы строго определённое действие. Скажем - клик-> переменная, член класса стала =0, ещё клик =1, и так по порядку. В обычном с++ такое реализуется просто созданием функции с идентичным именем и параметрами в классе-наследнике, а вот в как в билдере?
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
23.03.2014, 00:08 | 4 | |||||
![]() Решение
1
|
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|||||||||||
23.03.2014, 17:15 [ТС] | 5 | ||||||||||
Я извиняюсь, мне следовало сразу думать о развитии программы, для реализации задумки нужен двухмерный массив, и опять проблема в конструкторе, видимо в конструкторе-копирования и операторе = для класса.
Сейчас код выглядит так: .h
И ещё, если не сложно, я никак не могу провести аналогии с конструкторами в с++ обычном и этой структурой: "Cell(TComponent *AOwner) : TImage(AOwner) {}", это: "Наследник (Параметры) : Базовый (Параметры) {}" ?
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
23.03.2014, 19:27 | 6 |
Что значит "этой структурой"? Это класс, который унаследован от класса TImage, который унаследован от TGraphicControl и т.д.
В C++ Builder такой же С++, только с некоторыми расширениями в виде __property и т.д. (которых мы даже не касались в данной теме)
0
|
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|
23.03.2014, 19:47 [ТС] | 7 |
Имеется в виду синтаксис.
Судя по ошибкам компиляции можно легко создать одномерный массив членов класса, но уже с двухмерным начинаются такие жуткие проблемы? Или я просто всё усложняю?
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
||||||
23.03.2014, 20:05 | 8 | |||||
Сейчас напишу пример
Добавлено через 9 минут
1
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
23.03.2014, 20:35 | 9 |
Вот такое должно получится
0
|
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|||||||||||
24.03.2014, 15:53 [ТС] | 10 | ||||||||||
Всё получилось. Спасибо. Если можно, пара вопросов.
Я попытался обратиться к члену массива ACellArray[i][k] при нажатии на обычную кнопку
0
|
1280 / 598 / 116
Регистрация: 18.08.2009
Сообщений: 832
|
|
24.03.2014, 18:25 | 11 |
Все VCL объекты могут быть только указателями. Они не могут быть созданы статически.
Форма - это класс. Button1Click - это функция - член класса. Если ты хочешь видеть во всех членах класса TForm1 ACellArray, значит тебе необходимо сделать его членом класса TForm1 Добавлено через 4 минуты Despin, я настойчиво рекомендую ознакомиться сначала с литературой по VCL, прежде чем начинать работать. Если лень читать большие и скучные книги, прочитай хотя бы здесь
1
|
0 / 0 / 0
Регистрация: 22.03.2014
Сообщений: 6
|
|
24.03.2014, 19:18 [ТС] | 12 |
Maluda, спасибо за ссылку, обязательно прочитаю.
0
|
24.03.2014, 19:18 | |
Помогаю со студенческими работами здесь
12
Создание наследника от TWebBrowser
Двухмерный динамический массив экземпляров класса TImage Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |