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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 23.01.2011, 11:11   #1
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию создание картинок на форме

Бальшой всем привет. И Помогите умоляю.
как всегда что-то намудил в непонятном месте, создаю класс,
создаю динамический масив класса, заполняю каждую ячейку масива разной хернёй и картинками, а потом хочу нарисовать картинки на форме, но рисуется либо только первая либо ничего, а потом сразу же ошибка. Но картинки все нормальные, по отдельности все рисуются.
Код:
procedure ChangeSlotImageToForm1;
var
img:Timage;
kol,s,x1,y1:integer;
x,y,i:integer;
begin
s:=length(slotarray)-1;
kol:=1;
x:=15; x1:=x;
y:=15; y1:=y;
while s<>0 do
begin
if kol=6 then begin y1:=y1+32; kol:=1; x1:=x; end;
begin
img:=Timage.create(Form1.GroupBox2);
img.parent:=Form1.GroupBox2;
img.picture:=slotarray[i].image.picture; // вот это подчеркивает
img.Height:=32;
img.Width:=32;
img.Left:=x;
img.Top:=y;
end;
x1:=x1+32;
kol:=kol+1;
s:=s-1;
i:=i+1;
end;     
end;
скорее всего нельзя создать вторую картинку, наверное надо что-то ещё с первой сделать, что бы можно было создать ещё(
пыжок

Последний раз редактировалось maloun; 23.01.2011 в 18:39.
maloun вне форума Ответить с цитированием
Старый 23.01.2011, 12:08   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А если вместо:
Код:
img.picture:=slotarray[i].image.picture;
написать:
Код:
img.picture.Assign(slotarray[i].image.picture);
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2011, 14:47   #3
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

вот пример, надеюсь поможет.
Вложения
Тип файла: rar Image UP.rar (197.0 Кб, 27 просмотров)
Vervolf вне форума Ответить с цитированием
Старый 23.01.2011, 14:56   #4
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А если вместо:
Код:
img.picture:=slotarray[i].image.picture;
написать:
Код:
img.picture.Assign(slotarray[i].image.picture);
тоже самое)
пыжок
maloun вне форума Ответить с цитированием
Старый 23.01.2011, 15:13   #5
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

а где присвоение начального значения переменной i ?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 23.01.2011, 15:17   #6
Vervolf
Пользователь
 
Аватар для Vervolf
 
Регистрация: 14.01.2011
Сообщений: 97
По умолчанию

в цикле присваиваем i:=1..потом она становится =50 , затем её обнуляем а что тут не так?
Vervolf вне форума Ответить с цитированием
Старый 23.01.2011, 15:20   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
Сообщение от Vervolf Посмотреть сообщение
в цикле присваиваем i:=1..потом она становится =50 , затем её обнуляем а что тут не так?
По поводу i вопрос был к коду malounИ еще не понятно какое отношение ChangeClotImageToForm1 имеет к форме, как она доступ к Form1 осуществляет, короче где находится?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 23.01.2011 в 15:27.
Аватар вне форума Ответить с цитированием
Старый 23.01.2011, 17:01   #8
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

так, на счет формы, я много раз менял название процедуры...
а на счет недастоющего присваивания i, так без разницы с ним или без, всегда будет одно и тоже.

как минимум, не в этом дело...
пыжок
maloun вне форума Ответить с цитированием
Старый 23.01.2011, 19:46   #9
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

1. Если я не ошибаюсь, локальные переменные при выделении памяти не очищаются, а если так то вы заведомо обрекаетесь на ошибку, поскольку запросто программа вылетит за пределы массива slotarray
2. Возможно неправильно сам массив slotarray сформирован. Хотелось бы посмотреть как рисунок в него передается
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.01.2011, 19:04   #10
maloun
Форумчанин
 
Аватар для maloun
 
Регистрация: 03.01.2011
Сообщений: 233
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
1. Если я не ошибаюсь, локальные переменные при выделении памяти не очищаются, а если так то вы заведомо обрекаетесь на ошибку, поскольку запросто программа вылетит за пределы массива slotarray
2. Возможно неправильно сам массив slotarray сформирован. Хотелось бы посмотреть как рисунок в него передается
1. там всё правильно
2. не знаю как там про память но проект критует не из-за этого
3. ошибка была в кривом вызывании процедуры.

и ещё... я уже создавал Timage так что нормальная процедура абсолютно другая

var
i,x,y:integer;
x1,y1:integer;
count:integer;
interval:integer;
begin
x:=20; x1:=x;
y:=20; y1:=y;
Count:=1;
interval:=15;
for i:=0 to Length(Slotarray)-1 do
begin
if Count=6 then
begin
Count:=1;
y1:=y1+32+interval;
x1:=x;
end;
Slotarray[i].Image.Parent:=Form1.GroupBox2;
Slotarray[i].Image.Height:=32;
Slotarray[i].Image.Width:=32;
Slotarray[i].Image.Left:=x1;
Slotarray[i].Image.Top:=y1;
x1:=x1+32+interval;
Inc(Count);
end;
end;
пыжок

Последний раз редактировалось maloun; 24.01.2011 в 19:06.
maloun вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Програмное создание обьектов на форме Danilka Общие вопросы Delphi 7 13.04.2010 21:28
Создание табличной части в форме ДавидКац Microsoft Office Access 1 02.12.2008 21:32
Отображение картинок или метафайлов на форме. Hellen Общие вопросы Delphi 3 19.02.2007 10:44