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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2014, 03:52   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Загрузить картинку в Timage

Здравствуйте, думал задача легче легкого, а оказалось нет, нужно по OnClick Tlistbox'a загрузить картинку (в Tlistbox'e полные пути к картинке), вот код: даже таймер поставил, прямой обработчик не работал, думал может таймер поможет.

Код:
procedure TForm3.ListBox1Click(Sender: TObject);
begin
timer2.Enabled:=True;
end;

procedure TForm3.Timer2Timer(Sender: TObject);
var s1:string;
begin
s1:=listbox1.Items[ListBox1.itemindex];
if FileExists(s1) then
Image1.Picture.LoadFromFile(s1);
timer2.Enabled:=false;
end;
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 09.05.2014, 04:01   #2
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Таймеры тут не при чём. Ошибка распространённая, так как народ не понимает принципы работы с Image. Чтоб загрузить изображение в Picture.Graphic, его, как и любой поток нужно инициализировать. Методы инициализации зависят от среды, и типа изображения. За неимением этой информации советовать нечего.
doktor255 вне форума Ответить с цитированием
Старый 09.05.2014, 05:31   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

тут либо bmp либо jpg, возможно принципов не понимаю, но все же, что значит "от среды"? Среда программирования Delphi 7 lite, разве это что-то решит, да и тема создана в разделе: "общие вопросы delphi"))) стоило перенести timage на scrollbox и почему-то заработал код, а когда переносишь на панель-не работает, попробовал предварительно отчищать timage,

Код:
 Image1.Picture:=nil;
и загружать картинку, то все равно не работает, в общем помогите проблему решить, пожалуйста
from dark to light)

Последний раз редактировалось Алексей_2012; 09.05.2014 в 06:14.
Алексей_2012 вне форума Ответить с цитированием
Старый 09.05.2014, 06:14   #4
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

Цитата:
Среда программирования Delphi 7 lite, разве это что-то решит, да и тема создана в разделе
Напиши в D7 следующее
Код:
Uses: PngImage;
..
Image1.picture.Graphic := TPngImage.Create;
И то же самое напиши в XE. А потом попробуй объяснить, почему в одной среде код работает, а в другой не работает. Это тебе информация на будущее, чтоб впредь не говорил, что среда не имеет значения. Теперь по топику.
Код:
Image1.Picture.Graphic := TBitmap.Create;// инициализация делается один раз, а не по сто раз в обработчике какой нибудь кнопки.
Image1.Picture.Graphic.LoadFromFile...
Цитата:
попробовал предварительно отчищать timage,

Код:
Image1.Picture:=nil;
Я не вижу тут очистки. Я вижу уничтожение ссылки (если таковая вообще существует) на участок памяти, в котором хранится изображение. При этом если участок заполнен изображением, он не удалится, и произойдёт утечка памяти. Соответственно код абсолютно бесполезен при любом раскладе событий.

Последний раз редактировалось doktor255; 09.05.2014 в 06:21.
doktor255 вне форума Ответить с цитированием
Старый 09.05.2014, 06:23   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

вопросы есть) не работает твой код, ошибка вылетает.

Вот код:

Код:
procedure TForm3.ListBox1Click(Sender: TObject);
var s1:string;
begin
Image1.Picture.Graphic := TBitmap.Create;
s1:=listbox1.Items[ListBox1.itemindex];
if FileExists(s1) then  Image1.Picture.Graphic.LoadFromFile(s1);
end;
и ошибка во вложении

не пойму почему срабатывает на tscrollbox

Код:
var s1:string;
begin   
s1:=listbox1.Items[ListBox1.itemindex];
if FileExists(s1) then  Image1.Picture.LoadFromFile(s1);
end;
а на других компонентах-нет.
Изображения
Тип файла: jpg err.jpg (12.7 Кб, 89 просмотров)
from dark to light)

Последний раз редактировалось Алексей_2012; 09.05.2014 в 06:26.
Алексей_2012 вне форума Ответить с цитированием
Старый 09.05.2014, 12:03   #6
ZuBy
Участник клуба
 
Аватар для ZuBy
 
Регистрация: 29.09.2008
Сообщений: 1,234
По умолчанию

Модули прописаны в uses?
ZuBy вне форума Ответить с цитированием
Старый 09.05.2014, 12:42   #7
doktor255
Заблокирован
 
Регистрация: 31.03.2011
Сообщений: 976
По умолчанию

В ошибке написано, плохой битмап. И научись читать. Я что писал про Bitmap.Create? И куда ты его запилил?

Последний раз редактировалось doktor255; 09.05.2014 в 12:48.
doktor255 вне форума Ответить с цитированием
Старый 09.05.2014, 17:04   #8
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

Да, модули прописаны, "jpeg", а на счет битмапа никогда не сталкивался и картинки грузились норм, запилил в обработчик, в коде, показанным в посте №5
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 09.05.2014, 17:53   #9
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от doktor255 Посмотреть сообщение
Код:
Image1.Picture:=nil;
Я не вижу тут очистки. Я вижу уничтожение ссылки (если таковая вообще существует) на участок памяти, в котором хранится изображение. При этом если участок заполнен изображением, он не удалится, и произойдёт утечка памяти. Соответственно код абсолютно бесполезен при любом раскладе событий.
Не прав. Это нормальная очистка. С освобождением занятой прежде памяти под изображение.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Загрузить картинку в TSpeedButton из TImageList Shouldercannon Общие вопросы Delphi 11 02.12.2013 18:56
Как загрузить картинку ser70 Общие вопросы C/C++ 6 02.09.2013 12:32
загрузить gif в TImage hon Мультимедиа в Delphi 11 17.04.2012 16:39
Загрузить картинку в PictureBox Wolf-alone C# (си шарп) 3 25.03.2012 03:47
Как загрузить картинку? Editor Работа с сетью в Delphi 11 15.07.2008 23:13