Много одинаковых команд

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Много одинаковых команд

Сообщение KenDari » 28.03.2016 18:08:59

Здравствуйте
Посоветуйте, как убрать лишний текст
У меня много картинок, которые меняются при определенных действиях
Можно ли сделать вместо этого:

Код: Выделить всё
Image1.Picture.Loadfromfile('Картинка1.png');
Image2.Picture.Loadfromfile('Картинка2.png');
Image3.Picture.Loadfromfile('Картинка3.png');
Image4.Picture.Loadfromfile('Картинка4.png'); ...


Что-то типа этого (знаю, что так писать нельзя, и ничего не компилируется):

Код: Выделить всё
for i:= 1 to 4 do
Image[i].Picture.Loadfromfile('Картинка' + IntToStr(i) + '.png');


P. S. Нужно обойтись без Tag, ибо он задействован в другом
P.S. P.S. Картинки меняются при нажатии НЕ на них, так что sender тоже не прокатит
KenDari
новенький
 
Сообщения: 12
Зарегистрирован: 25.03.2016 16:18:09

Re: Много одинаковых команд

Сообщение Kemet » 28.03.2016 18:24:20

нужно сделать массив из картинок
Код: Выделить всё
var images : array [1..4] of TImage;
...
for i := 1 to 4 do begin
    images[i].Picture.Loadfromfile('Картинка' + IntToStr(i) + '.png');
end;
Kemet
постоялец
 
Сообщения: 241
Зарегистрирован: 10.02.2010 19:28:32
Откуда: Временно оккупированная территория

Re: Много одинаковых команд

Сообщение resident » 28.03.2016 18:28:48

В чем проблема-то?
Создайте переменную - массив of TImage и в обработчике создания формы заполните его своими Image-ами

Добавлено спустя 41 секунду:
KenDari писал(а):без Tag, ибо он задействован в другом

В курсе :)

Добавлено спустя 8 минут 3 секунды:
KenDari писал(а):знаю, что так писать нельзя

Именно так и нужно писать :mrgreen:
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51

Re: Много одинаковых команд

Сообщение KenDari » 28.03.2016 20:19:49

Kemet писал(а):нужно сделать массив из картинок


Благодарю :wink:

Добавлено спустя 2 минуты 41 секунду:
resident писал(а):В чем проблема-то?

Спасибо :)
Да первые опыты в лазэрусе, знаю самый минимум :lol:
KenDari
новенький
 
Сообщения: 12
Зарегистрирован: 25.03.2016 16:18:09

Re: Много одинаковых команд

Сообщение скалогрыз » 29.03.2016 00:03:56

resident писал(а):Создайте переменную - массив of TImage и в обработчике создания формы заполните его своими Image-ами

так массив-то существует уже.
Код: Выделить всё
var
  i : integer;
  img : Timage;
  n : string;
begin
  for i:=1 to 4 do begin
    n:=IntToStr(i);
    img:=FindChildControl('Image'+n);
    if Assigned(img) then
      img.Picture.Loadfromfile('Картинка' + n + '.png');
  end; 
скалогрыз
долгожитель
 
Сообщения: 1803
Зарегистрирован: 03.09.2008 02:36:48

Re: Много одинаковых команд

Сообщение resident » 29.03.2016 13:06:33

скалогрыз писал(а):так массив-то существует уже

Ок, красиво и соответствует названию темы. Только у вас каждый раз нужно выискивать каждый Image.
Вашу идею наверное можно прикрутить к предыдущему решению для автоматического заполнения массива of TImage.
resident
энтузиаст
 
Сообщения: 605
Зарегистрирован: 13.03.2013 16:58:51


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 232

Рейтинг@Mail.ru