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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.03.2011, 17:18   #1
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
Радость Проясните ситуацию с TImage

Здравствуйте, объясните мне пожалуйста, вот к примеру ситуация:
Я создаю TImage на форме, в инспекторе в picture выбираю нужную мне картинку, и с этого момента она хранится в памяти моего приложения(ну те даже после стирания картинки с HDD она все еще остается в приложении).
Вот ситуация 2. Я беру простым вызовом метода image1.picture.loadfromfile(''); загружаю ту же картинку. Это насколько я понимаю ссылочный вариант и при отсутствии картинки на HDD приложение не сможет ее вывести.
Соответственно вопрос, как кодом загрузить картинку так, чтобы она хранилась в приложении ровно так же как это было в ситуации 1?
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 16.03.2011, 17:31   #2
ImmortalAlexSan
Участник клуба
 
Аватар для ImmortalAlexSan
 
Регистрация: 13.01.2009
Сообщений: 1,353
По умолчанию

Код:
image1.picture.bitmap.loadfromfile('');
"Тебе то может на меня и насрать, но твои глаза меня обожают!"
ImmortalAlexSan вне форума Ответить с цитированием
Старый 16.03.2011, 17:43   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Ну неужели я непонятно написал? Мне нужно, чтобы рисунок всегда хранился в приложении, даже если я запущу его на другом ПК, где этого рисунка отродясь не было. Все это нужно сделать кодом, а не кликами в инспекторе. Рисунок и res таскать с собой не хочу. Интересно по какому принципу это делает инспектор.
Ненавижу быть как все, но люблю, чтобы все были как я.

Последний раз редактировалось MyLastHit; 16.03.2011 в 17:47.
MyLastHit вне форума Ответить с цитированием
Старый 16.03.2011, 17:45   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

можно загрузить в имадже и он будет там, а если нужно что б он появился потом, то загрузи в имадые лист, а потом можно брать с него и загружать в обычныи имадге
ImageList
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.03.2011, 17:48   #5
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Спасибо кэп) Ты сейчас своими словами пересказал мне первую ситуацию которую я описал выше. Мне нужно это все сделать кодом. Чистым кодом, представьте что инспектора не существует.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 16.03.2011, 17:56   #6
New man
Форумчанин
 
Регистрация: 24.01.2011
Сообщений: 774
По умолчанию

Я где то читал, вроде сварганить res файл и потом при компиляции
в твою прогу компилятор загрузит
a.k.a. Angelicos Phosphoros
Мой сайт
New man вне форума Ответить с цитированием
Старый 16.03.2011, 18:03   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Или как в первом варианте
или из ресурса
или из прилагаемого файла в том или ином виде
больше нет вариантов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.03.2011, 18:05   #8
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

я чет не поиму, у тебя картинка будет одна и тaже? что конкретно ты хочеш делать? может ты просто не знаеш как програмно загрузить картинку в имадже?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 16.03.2011, 18:08   #9
spamer
Software Developer
Старожил
 
Аватар для spamer
 
Регистрация: 19.12.2008
Сообщений: 2,070
По умолчанию

Вот правильно люди говорят - ресурсы самое оно...
Вобщем создаете logo.RC файл подобного вида:
Код:
L_HEADER_LOGO RCDATA "..\..\Resources\Logo\Header Logo.png"
Компилите его...получаете logo.res файл...
затем например в секцию
Код:
implementation
{$R logo.RES}
А затем юзаете подобную функцию:
Код:
function LoadPngImageFromResource(const AImage: TJvImage; const AResName: string): Boolean;
var
  tmpPngImage: TPngImage;
begin
  Result := False;
  if (AImage = nil) or (AResName = '') then
    Exit;

  tmpPngImage := TPngImage.Create;
  try
    AImage.Picture := nil;
    tmpPngImage.LoadFromResourceName(HInstance, AResName);
    AImage.Picture.Assign(tmpPngImage);
  finally
    Result := AImage.Picture <> nil;
    FreeAndNil(tmpPngImage);
  end;
end;
Как-то так...
Будь проще и люди к тебе потянутся
spamer вне форума Ответить с цитированием
Старый 17.03.2011, 00:03   #10
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Добавлю к верным ответам Аватар и spamer

Цитата:
Сообщение от MyLastHit
Интересно по какому принципу это делает инспектор.
при редактировании любого объекта в инспекторе его свойства записываются в файл DFM (который компилятором подключается в качестве ресурсов, кстати). Так вот, Image не является исключением, когда Вы грузите рисунок в инспекторе, он кодируется и записывается прямо в DFM.


p.s. MyLastHit, честно говоря, не понимаю, чем Вас предложенные решения не устраивают!
Serge_Bliznykov вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проясните работу с указателями функций fs444 Общие вопросы C/C++ 5 29.10.2009 08:28
разъясните пожалуйста ситуацию с массивом: =|винтик|= Помощь студентам 2 20.01.2009 19:49
Как обрабатывать данную ситуацию? Arkuz БД в Delphi 2 08.12.2008 02:51
Как обработать следующую ситуацию? Tanuska___:) БД в Delphi 5 09.09.2008 12:47
Помогите решить одну ситуацию Dexic Помощь студентам 2 26.06.2007 09:06