Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Компоненты Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 07.02.2014, 02:39   #1
DrunkPacifist
 
Регистрация: 05.03.2011
Сообщений: 5
По умолчанию Не подключаются автоматически модули в дизайнтайме для данных в TPicture

Здравствуйте. Столкнулся со следующей проблемой при разработке компонента: если бросить компонент на форму, то при задании ему картинки через св-во Picture, отличной от Bmp (например Jpeg) в дизайнтайме к программе автоматически подключатся модули, содержащие соответствующие изображению классы (в данном случае это будет TJPEGImage и модуль jpeg). Вот код класса компонента:
Код:
unit TestUnit;

interface

Type
  TMyComponent = class(TWinControl)
  Private
    FImage: TImage;
    function GetPicture: TPicture;
    procedure SetPicture(const Value: TPicture);
  Public
    Constructor Create(AOwner: TComponent); Override;
    Destructor  Destroy; Override;
  Published
    Property Picture: TPicture Read GetPicture Write SetPicture;
  End;

implementation

{ TMyComponent }

constructor TMyComponent.Create(AOwner: TComponent);
begin
  inherited;
  FImage:= TImage.Create(Self);
  FImage.Parent:= Self;
end;

destructor TMyComponent.Destroy;
begin
  FImage.Free;
  inherited;
end;

function TMyComponent.GetPicture: TPicture;
begin
  Result:= FImage.Picture;
end;

procedure TMyComponent.SetPicture(const Value: TPicture);
begin
  FImage.Picture:= Value;
end;

end.
Однако если свойств, относящихся к картинке много, то логично вывести их в подсвойство компонента (как св-во Font у других vcl-компонентов), скажем, Image (добавив дополнительный класс в код и спользовав его в секции property компонента.
Код:
Property Image: TImageProperty
В таком случае св-во Picture будет доступно как MyComponent.Image.Picture), однако в таком случае модули типа jpeg в код автоматически подставляться не будут - это приведет к тому что картинка хоть и будет отображаться в дизайнтайме, но в рантайме ее не будет видно (хотя все работает для bmp-файлов). Если добавть модули вручную то картинка будет отображаться и во время выполнения. Как сделать так, чтобы модули, необходимые для поддержки картинок подключались автоматически при использовании подкласса в качестве свойства компонента? Заранее благодарен!

P.S. IDE - XE1, для компонента выполняется RegisterComponent, для него и подкласса - RegisterClass
P.P.S. Извиняюсь за сумбурность изложения - уже довольно поздно, а также за отсутствие кода с использованием подкласса в качестве свойства компонента - если никто ничего не поймет то я воспроизведу и выложу его завтра
DrunkPacifist вне форума Ответить с цитированием
Старый 07.02.2014, 09:12   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да бог памяти: В Д7 когда компонент засовываешь в Package, там в свойствах этого пакета указываются зависимости. Вот те самые модули, что должны подключаться автоматом.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 07.02.2014, 11:37   #3
DrunkPacifist
 
Регистрация: 05.03.2011
Сообщений: 5
По умолчанию

Добавил в requires vclimg - не помогло. Решилось прописыванием JPEG, PngImage, GIFImg, в Uses модуля компонента - так себе решение. Может вместо vclimg надо подключать что-то другое?
DrunkPacifist вне форума Ответить с цитированием
Старый 07.02.2014, 12:58   #4
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Цитата:
Сообщение от DrunkPacifist Посмотреть сообщение
Добавил в requires vclimg - не помогло. Решилось прописыванием JPEG, PngImage, GIFImg, в Uses модуля компонента - так себе решение. Может вместо vclimg надо подключать что-то другое?
так они не входят в стандартный набор компонентов, соответственно нужно указывать сторонние модули. то что вы и сделали. и таскать их с собой.
ZuBy вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не подключаются внешние библиотеки sapogan Общие вопросы по Java, Java SE, Kotlin 2 20.11.2013 02:39
Модули для работы с системой (для Delphi) Terran Компоненты Delphi 9 07.01.2010 02:54
Как заставить макрос работай автоматически при внесении данных ? artfunk Microsoft Office Excel 9 31.08.2008 20:01
TPicture Crivel Помощь студентам 4 10.08.2008 20:01
Помогите с tPicture Altera Компоненты Delphi 3 23.04.2008 17:29