Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C++ Builder > TImage и массив ссылок на него |
Автор: SydeX 28.11.2005, 16:10 |
Приветсвтую люди добрые. Вот какой вопрос. Есть у меня 9 картинок - стоящих в три ряда. (что-то типа галлереи) Проблем, будучи жутко ленивым во всех процедурах которые работают с этим гридом прописывать имя каждого по миллиону раз лень. Сделан массив ссылок на каждый из элементов: TImage * MyImages; TImage MyImages[0] = Form55->Image1; TImage MyImages[1] = Form55->Image2; ... etc. Вроде всё работает - ссылки сохраняются, если меняешь корневые проперти класса TImage тоже всё хоккей, (ну вроде визибл, не-визибл етс). Самое интересное начинается потом - когда нужно загрузить в них картинку. Если обращаюсь по массиву - MyImages[0]->Picture->Bitmap->LoadFromStream(MyStream); Моментально ловлю эксепшн. При этом, если загружаю Image1->Picture->Bitmap->LoadFromStream(MyStream); Дело проходит без проблем. ![]() ![]() ![]() Думал может каким то образом не инициализируются элементы класса. Пробовал так: MyImages[0]->Picture = new TPicture(); MyImages[0]->Picture->Bitmap = new Graphics::Bitmap(); MyImages[0]->Picture->Bitmap->LoadFromStream(MyStream); при этом ловлю эксепшн всё в том же месте. Я в тупике. Может кто нибудь может объяснить, что ему не нравится ? |
Автор: _hunter 28.11.2005, 16:37 |
а сам Image кто создавать будет? + запись TImage MyImages[0] = Form55->Image1; абсолютно неправильная: ты в каждой строке создаеш по массиву. |
Автор: SydeX 28.11.2005, 16:48 |
Погодь _hunter, В каком плане сам Image ? Я же не создаю новую картинку - я создаю ссылку на имеющийся объект. С массивом ляп понял. Спасибо. |
Автор: _hunter 28.11.2005, 16:57 |
ссылка то ссылка, но что будет если ты форму закроеш? ( или у тебя код этот в той же форме? ) + зачем, в таком случае, Picture ( и Bitmap ) создавать? -- они уже в предке созданы должны быть. |
Автор: SydeX 28.11.2005, 17:10 |
Ну закрою - и открою снова, что должно измениться ? Код в той же форме - объект создаётся по FormCreate при загрузке приложения. Сам по себе никуда не девается закрыта ли форма или нет... кстати, ImageGrid[0] = Form55->Image1; с ссылками...так и не понял Эта строчка (где ImageGrid это тот же MyImages) чем он тебе так не угодил ? Это же массив ссылок (* * - по сути) Где каждая ссылка приравнивается к ссылке на класс. То есть получается массив ссылок на классы. (TImage * Image1 по определению в Form55.h является соответственно ссылкой на класс) |
Автор: _hunter 28.11.2005, 17:29 |
как эти имаджи создаются я не знаю, но судя по коду они просто болтаются на форме. значит при уничтожении формы и они за компанию грохнутся. а ты где-то будеш продолжать их использовать. только это мне и не нравится |