C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
ScrollBox и картинки, Помогите!
Aptem
Отправлено: 26.08.2005, 07:14


Мастер участка

Группа: Участник
Сообщений: 349



Привет всем.

Есть проблема:
На форме лежит скроллбокс, мне необходимо динамически добавлять туда картинки (я так думаю через компаненту TImage), что-то вроде панели с thumbs слева в FineReader 6.

Как создать нужное количество экземпляров TImage, если заранее не известно их количество? Создать массив такого типа не получилось, нет такого конструктора!

Спасибо за внимание.
AVC
Отправлено: 26.08.2005, 08:37


Ветеран

Группа: Модератор
Сообщений: 1583



QUOTE

Как создать нужное количество экземпляров TImage, если заранее не известно их количество? Создать массив такого типа не получилось, нет такого конструктора!

???
Создавать динамически.
Что не получилось-то, создать динамический массив указателей?
GIZMO
Отправлено: 26.08.2005, 10:07


Машинист паровоза

Группа: Участник
Сообщений: 174



QUOTE (Aptem @ 26/08/2005, 07:14)
Привет всем.

Есть проблема:
На форме лежит скроллбокс, мне необходимо динамически добавлять туда картинки (я так думаю через компаненту TImage), что-то вроде панели с thumbs слева в FineReader 6.

Как создать нужное количество экземпляров TImage, если заранее не известно их количество? Создать массив такого типа не получилось, нет такого конструктора!

Спасибо за внимание.

CODE

TList *ListImage = new TList();
gvg
Отправлено: 26.08.2005, 11:47


Машинист паровоза

Группа: Участник
Сообщений: 222



Или тот-же TImageList использовать...
Aptem
Отправлено: 26.08.2005, 12:13


Мастер участка

Группа: Участник
Сообщений: 349



QUOTE (gvg @ 26/08/2005, 11:47)
Или тот-же TImageList использовать...

Не понял? Это же не визуальный компанент или я че-то не понимаю?
Иван
Отправлено: 26.08.2005, 12:27


Машинист паровоза

Группа: Участник
Сообщений: 207



вот тут написано более менее подробно
http://ad.cctpu.edu.ru/SSP/Prof/Glava5/Index5.html
gvg
Отправлено: 26.08.2005, 13:29


Машинист паровоза

Группа: Участник
Сообщений: 222



TImageList — для учета картинок. Для отображения картинок брось на ScrollBox PaintBox и выводи на него, не забывая увеличивать высоту PaintBox-а и ScrollBox->VertScrollBox->Range.
Aptem
Отправлено: 29.08.2005, 07:58


Мастер участка

Группа: Участник
Сообщений: 349



QUOTE (gvg @ 26/08/2005, 13:29)
TImageList — для учета картинок. Для отображения картинок брось на ScrollBox PaintBox и выводи на него, не забывая увеличивать высоту PaintBox-а и ScrollBox->VertScrollBox->Range.

Спасибо за ответы!

А как на PaintBox вывести сразу несколько картинок?

Отредактировано Aptem — 29/08/2005, 07:59
Aptem
Отправлено: 29.08.2005, 08:07


Мастер участка

Группа: Участник
Сообщений: 349



... и еще

Вот я создал список указателей:
CODE
TList *Thumbs = new TList ();


Затем помещаю туда TImage:
CODE
TImage *Image = new TImage ();
Thumbs -> Add ( Image );


Вроде бы поместил, потом пытаюсь обратиться к элементу списка:
CODE
for ( int i = 0; i < Thumbs -> Count; i++ )
{
 Thumbs -> Items[i] -> Top = 100;
 Thumbs -> Items[i] -> Left = 100;
}


Вот здесь он и начинает ругаться при компиляции!
CODE
Structure required on left side of -> or ->*


Как же обратиться к элементу TList'а?
gvg
Отправлено: 29.08.2005, 08:11


Машинист паровоза

Группа: Участник
Сообщений: 222



У PaintBox тоже есть Canvas. На нем можно выводить чего угодно, и сколько пожелаешь. В help-е примеров достаточно...
В принципе, может и не PaintBox, и TImage положить, но одну на всех. А уже в нее пиши квадратики со своими картинками...

Отредактировано gvg — 29/08/2005, 08:27
gvg
Отправлено: 29.08.2005, 08:31


Машинист паровоза

Группа: Участник
Сообщений: 222



TList — список указателей. Он понятия не имеет, на что указывает, поэтому не снает ни про Top, ни про Left. Нужно привести к тому виду, как надо: ((TImage*)List->Items[i])->Top

Отредактировано gvg — 29/08/2005, 08:33

Вернуться в Вопросы программирования в C++Builder