Показать сообщение отдельно
  #1  
Старый 28.12.2012, 19:26
nilagor nilagor вне форума
Прохожий
 
Регистрация: 28.12.2012
Сообщения: 2
Репутация: 10
По умолчанию Создание компонента на основе класса TImage, как использовать Picture ?

Необходимо создать компонент реализующий массив изображений. Грубо говоря ImageList, но для полноценных изображений, а не иконок. Я решил сделать следующим образом - компонент потомок TImage, с доп полями:

Код:
v_imageIndex:integer;
v_imageList:TStringList;

где первое - номер выводимой картинки, второе - список адресов остальных картинок.
Логика подразумевалась следующая - при изменении индекса запускается Picture.LoadFromFile(v_imageList[<новый индекс>]);
Однако оказалось, что Picture у TImage лежит в области Private и обратиться к нем невозможно. Попробовал добавить свой:

Код:
v_picture: TPicture;
published
property Picture: TPicture read v_picture write SetPicture;

Реализовал логику:
Код:
procedure xImageList.IndexPaint(ind: Integer);
begin
 v_imageIndex:=ind;
 v_picture.LoadFromFile(v_imageList[ind]);
 width:=v_picture.Width;
 height:=v_picture.Height;
end;

Но при работе с компонентом не происходит ровным счётом ничего =( что-то мне подсказывает, что всё из-за того, что не родной Picture и не запускаются родные Paint и тп. Подскажите как это обойти и что вообще делать? Не писать же свои методы Paint и тп =( Помогите пожалуйста

Если надо, могу выложить полный текст компонента, он небольшой
Ответить с цитированием