Вызов переменной с динамическим именем Lazarus Pascal
есть форма со списками Memo1, Memo2, Memo3 и т.д Нужно в цикле задать текст внутри списка по виду
i := 1;
while i < 5 do
begin
Memoi.Caption := i;
i := i + 1;
end;
Проблема в том, что я не знаю, как указать Memoi то бишь динамически изменить имя переменной для её записи, прошу подсказать, как это сделать.
Ответы (1 шт):
Автор решения: Kromster
→ Ссылка
Как более простой вариант - заведите и заполните массив и используйте его:
fMemos: array [0..2] of TMemo;
...
fMemos[0] := Memo1;
fMemos[1] := Memo2;
fMemos[2] := Memo3;
...
for i := 0 to High(fMemos) do
begin
fMemos[i].Caption := IntToStr(i);
end;
Как более универсальный вариант - используйте теги (Tag). В конструкторе форм, у каждого элемента пропишите тег, а в программе идите по контейнеру с элементами и проверяйте по тегам:
for i := 0 to Panel1.ChildCount - 1 do
if (Panel1.Childs[i] is TMemo) and (Panel1.Childs[i].Tag > 0) then
begin
TMemo(Panel1.Childs[i]).Caption := IntToStr(Panel1.Childs[i].Tag);
end;