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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.06.2007, 16:31   #1
Viteef
stopfake.org
Участник клуба
 
Регистрация: 03.05.2007
Сообщений: 1,927
Радость 2хм. массив из TImage

Разыгралось у меня нынче любопытство! Расскажите пожалуйста как можно динамически создать (для примера шахматную доску) из TImage и описать ее как 2хм. массив. Как к нему (массиву) обращатся можно?
Viteef вне форума Ответить с цитированием
Старый 27.06.2007, 17:32   #2
Romanbl4
Форумчанин
 
Аватар для Romanbl4
 
Регистрация: 20.06.2007
Сообщений: 144
По умолчанию

когда я делал игру "Морской бой" я ни до чего не додумался кроме как нарисовать кучу Image. А чтобы ими управлять - создал массив Pole:array [1..10,1..10] of TImage;

потом в form1.oncreate поочереди присвоил
Pole[1,1]:=Image1;
Pole[2,1]:=Image2;
и т.д.
Romanbl4 вне форума Ответить с цитированием
Старый 27.06.2007, 17:33   #3
ЧИЖ
Форумчанин
 
Аватар для ЧИЖ
 
Регистрация: 24.02.2007
Сообщений: 104
Лампочка

сделать в общем то так же как и одномерный и не массив

Код:
 
picmass:array[1..8,1..8] of Timage;
 
 
for i:=1 to 8 do 
for j:=1 to 8 do begin
picmass[i,j]:=Timage.create(owner);
picmass[i,j].parent:=self;
if (i+j) mod 2 = 0 then
picmass[i,j].picture.bitmap.LoadFromFile('Black.BMP')
else
picmass[i,j].picture.bitmap.LoadFromFile('White.BMP');
picmass[i,j].left:=(i-1)*picmass[i,j].width;
picmass[i,j].top:=(j-1)*picmass[i,j].height;
end;
или если совсен динамический то

Код:
 
picmass:array of array of Timage;
 
 
setlength(picmass,7);
for i:=0 to 7 do begin
setlength(picmass[i],7);
for j:=0 to 7 do begin
picmass[i,j]:=Timage.create(owner);
picmass[i,j].parent:=self;
if (i+j) mod 2 = 0 then
picmass[i,j].picture.bitmap.LoadFromFile('Black.BMP')
else
picmass[i,j].picture.bitmap.LoadFromFile('White.BMP');
picmass[i,j].left:=i*picmass[i,j].width;
picmass[i,j].top:=j*picmass[i,j].height;
end;
end;
а вот как к ним обработчики привязать onclick например сам хотел бы узнать
Разберемся.......
ЧИЖ вне форума Ответить с цитированием
Старый 27.06.2007, 17:48   #4
mrandrey
Форумчанин
 
Регистрация: 30.03.2007
Сообщений: 124
По умолчанию

Цитата:
а вот как к ним обработчики привязать onclick например сам хотел бы узнать
Тоже просто:

Код:
var picmass:array of array of Timage;
a:timage; 
begin
setlength(picmass,7);
for i:=0 to 7 do begin
setlength(picmass[i],7);
for j:=0 to 7 do begin
a:=Timage.create(owner);
a.onclik:=Myclick;
a.parent:=self;
picmass[i,j]:=a;
if (i+j) mod 2 = 0 then
picmass[i,j].picture.bitmap.LoadFromFile('Black.BMP')
else
picmass[i,j].picture.bitmap.LoadFromFile('White.BMP');
picmass[i,j].left:=i*picmass[i,j].width;
picmass[i,j].top:=j*picmass[i,j].height;
end;
end;
end;
Что еще за извращения с цветными буковками ?
У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор
Тут без 100г не розберешся.....
Спасибо не нужно, а на весы слева кликнуть не помешает!!!

Последний раз редактировалось mihali4; 07.02.2010 в 21:48.
mrandrey вне форума Ответить с цитированием
Старый 28.06.2007, 20:18   #5
zetrix
Delphi/C++/C#
Участник клуба
 
Аватар для zetrix
 
Регистрация: 29.10.2006
Сообщений: 1,972
По умолчанию

Извините конечно, но чем вас DrawGrid или StringGrid не устраивает? Канва есть, всё уже разбито на квадраты, OnClick - не проблема для каждой ячейки сделать...
zetrix вне форума Ответить с цитированием
Старый 08.02.2010, 16:41   #6
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

ЧИЖ, большое спасибо за код! Очень помогло!
Хотелось бы узнать, что делает строка
Код:
picmass[i,j].parent:=self;
?
А то не люблю использовать то, чего не понимаю
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 08.02.2010, 18:45   #7
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Alt, это так указывается предок картинки. Это необходимо при динамическом создании. Можно ещё написать вместо self

Код:
Image.Parent := Form1;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 08.02.2010, 18:48   #8
TwiX
Участник клуба
 
Аватар для TwiX
 
Регистрация: 28.07.2009
Сообщений: 1,510
По умолчанию

Дословно и, в то же время, правильно - это Родитель=)
По сути - контейнер, в котором хранится объект.
TwiX вне форума Ответить с цитированием
Старый 08.02.2010, 19:03   #9
Alt
Лжец и смутьян
Форумчанин
 
Аватар для Alt
 
Регистрация: 03.04.2009
Сообщений: 194
По умолчанию

Спасибо!
Буду знать.
Помогли тебе - помоги другому.
Alt вне форума Ответить с цитированием
Старый 08.02.2010, 20:52   #10
Serg-Grin
Дивиджей
Пользователь
 
Аватар для Serg-Grin
 
Регистрация: 05.01.2009
Сообщений: 84
По умолчанию

Здравствуйте, zetrix вы написали что можно каждую клетку в StringGrid разбить через OnClick.
Можете примерно написать код?
Впишите в google:
DVJ Serg-Grin
И вы услышите мои песни
Serg-Grin вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
TImage Killbrum Помощь студентам 8 27.08.2008 22:40
Timage Черничный Компоненты Delphi 10 04.07.2008 12:50
Timage RealSHELS Общие вопросы Delphi 7 05.05.2008 20:12
Timage RealSHELS Общие вопросы Delphi 2 03.05.2008 23:23
TImage Andrey9392 Компоненты Delphi 6 06.04.2007 10:43