![]() |
|
|
|||||||
| Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
![]() |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
|
#1
|
|||
|
|||
|
Здравствуйте!
Столкнулся со следующей проблемой. Есть три компонента 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
|
||||
|
||||
|
Код:
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
|
||||
|
||||
|
1.
Код:
with TImage(FindComponent('Image'+IntToStr(i))).Canvas do
begin
// draw
end;отрисовку делать в отдельной процедуре, которой параметром передавать TImage из цикла |
| Этот пользователь сказал Спасибо NumLock за это полезное сообщение: | ||
Egeni (31.07.2013)
| ||
|
#4
|
|||
|
|||
|
Aristarh Dark, NumLock, Большое спасибо! Всё работает.
|