Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 31.07.2013, 19:22
Egeni Egeni вне форума
Прохожий
 
Регистрация: 31.07.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Название компонента в качестве переменной

Здравствуйте!

Столкнулся со следующей проблемой. Есть три компонента Image (Image1, Image2, Image3). На каждом компоненте нужно вывести одинаковый рисунок. Пример кода:

Код:
with Image1.Canvas do
 begin
 MoveTo(xf,yf+round(m*dat[1]*(c2-1)/2));
 LineTo(xf+round(m*dat[1]*c1/3),yf);

 (много-много кода)

 end;

Проще всего скопировать всё три раза, но не хотелось бы раздувать объём кода. Можно ли в строчке with ... do менять название переменной, например, так:

Код:
for i:=1 to 3 do
with Image[i].Canvas do
 begin
 MoveTo(xf,yf+round(m*dat[1]*(c2-1)/2));
 LineTo(xf+round(m*dat[1]*c1/3),yf);

 (много-много кода)

 end;

Понятно, что в таком виде код не работает. Хотел бы узнать, возможно ли это в принципе и как это сделать.

Заранее спасибо!

P.S. Программу пишу для себя, по образованию не программист, поэтому, по возможности, прошу объяснить на каком-нибудь примере.
Ответить с цитированием
  #2  
Старый 31.07.2013, 19:25
Аватар для Aristarh Dark
Aristarh Dark Aristarh Dark вне форума
Модератор
 
Регистрация: 07.10.2005
Адрес: Москва
Сообщения: 2,907
Версия Delphi: Delphi XE
Репутация: выкл
По умолчанию

Код:
var
  img:TImage;
  i:integer;
begin
  for i:=1 to 3 do
    begin
      img:=FindComponent('Image'+IntToStr(i)) as TImage;
      if img<>nil then
        begin
          with img do
             begin
                //много-много кода
             end;
        end;
    end;
end;
как-то так...
__________________
Некоторые программисты настолько ленивы, что сразу пишут рабочий код.

Если вас наказали ни за что - радуйтесь: вы ни в чем не виноваты.
Ответить с цитированием
Этот пользователь сказал Спасибо Aristarh Dark за это полезное сообщение:
Egeni (31.07.2013)
  #3  
Старый 31.07.2013, 19:27
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

1.
Код:
  with TImage(FindComponent('Image'+IntToStr(i))).Canvas do
  begin
    // draw
  end;
2.
отрисовку делать в отдельной процедуре, которой параметром передавать TImage из цикла
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
Этот пользователь сказал Спасибо NumLock за это полезное сообщение:
Egeni (31.07.2013)
  #4  
Старый 31.07.2013, 20:13
Egeni Egeni вне форума
Прохожий
 
Регистрация: 31.07.2013
Сообщения: 2
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Aristarh Dark, NumLock, Большое спасибо! Всё работает.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 12:01.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025