Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
ВнизМожно ли имена компонентов формировать программго? Найти похожие ветки
← →
Константин (2012-02-10 14:47) [0]Здравствуйте, подскажите можно ли обращаться к компонентами яростная их имена в программе? Например у меня есть label1...label10. Мне нужно записать одну и ту же информацию во все label. Можно ли создать цикл и номер label подставлять из переменной
← →
sniknik © (2012-02-10 14:49) [1]можно, но не нужно, наоборот нужно приучать себя к мысли, что имена не нужны...
← →
Константин (2012-02-10 15:39) [2]А подскажите как? Как записать циклом во все ячейки? Что то вроде
For i:=1 to 10 do label[i] := "111222";
А то код очень разрастается.
← →
MBo © (2012-02-10 15:47) [3]label[i] - это если у тебя массив компонентов (динамически созданных, или внесенных в массив).
Если массива нет, то функция FindComponent ищет по имени.
Как уже сказано в [1] - это весьма плохой дизайн.
← →
sniknik © (2012-02-10 15:47) [4]
for i:=0 to ComponentCount-1 do
if Components[i] is TLabel then TLabel(Components[i]).Caption:= "111222";
← →
_Юрий (2012-02-10 15:50) [5]создаем массив
TForm1 = class(TForm)
private
FLabels: array of TLabel;
..
заполняем его:
SetLength(FLabels, 10);
FLabels[0]:=Label1; //важно понимать, что это еще одна ссылка на тот же самый экземпляр.
FLabels[1]:=Label2;
...
3. Цикл по массиву
for i:=0 to Length(FLabels) - 1 do
FLabels[i].Caption:="123";
---
Можно конечно и цикл по компонентам формы сделать
for I:=0 to Form1.ComponentsCount - 1 do
if Form1.Components[i] is Tlabel then
(Form1.Components[i] as Tlabel).Caption := "123";
Но это дурной путь. Имена не нужны
← →
Anatoly Podgoretsky © (2012-02-10 16:44) [6]> MBo (10.02.2012 15:47:03) [3]
Массив есть всегда, даже два.
← →
DVM © (2012-02-10 17:40) [7]
> Здравствуйте, подскажите можно ли обращаться к компонентами
> яростная их имена в программе? Например у меня есть label1.
> ..label10. Мне нужно записать одну и ту же информацию во
> все label.
Еще стоит упомянуть про свойство Tag, в нем можно вполне себе хранить нечто отличащее одну метку от другой, можно просто число, можно и все что угодно вплоть до указателей на записи или даже объекты или строки. Главное не забывать удалять, если это что-то сложнее числа. В сочетании с перебором компонентов позволит оперировать метками как заблагорассудится.
← →
Константин (2012-02-10 21:43) [8]
> FLabels[0]:=Label1; //важно понимать, что это еще одна ссылка
> на тот же самый экземпляр.
Блин, проканало... Хотя не понятно почему... У меня есть "Х", я создаю "Y" приравниваю Y=X. А получается что X и Y становятся одним и тем же.
← →
sniknik © (2012-02-10 21:52) [9]> Хотя не понятно почему...
что может быть не понятного в ссылке?
> У меня есть "Х", я создаю "Y" приравниваю Y=X. А получается что X и Y становятся одним и тем же.
у тебя есть рука, ты указываешь ее пальцем на дом... потом приравнял указание (направление) одного пальца на дом другому пальцу, и теперь указываешь туда же пальцем второй руки.... поменялся ли дом от этого? стало ли их(дома) два?
← →
Плохиш © (2012-02-11 00:21) [10]
> Константин (10.02.12 21:43) [8]
Может тебе всё-таки основы почитать...
← →
Германн © (2012-02-11 04:47) [11]
> sniknik © (10.02.12 21:52) [9]
> Плохиш © (11.02.12 00:21) [10]
А тут нужно прочитать хорошую книжку, в которой есть объяснения когда при присваивании копируется указатель, а когда копируется содержимое.
← →
mamon (2012-02-12 17:07) [12]var
i: Integer;
begin
For i:=0 to 2 do
(Components[i] as TLabel).Caption:= "123123";
end;
← →
lesstab © (2012-02-20 10:44) [13]Здравствуйте.
На форме размешен набор панелей. Нужно создать массив панелей и каждый элемент этого массива связывать с отдельной панелью на форме.
Связываю:
FreeTimePanels[1,0] := Panel10;
FreeTimePanels[2,0] := Panel20;
FreeTimePanels[3,0] := Panel30;
FreeTimePanels[4,0] := Panel40;
FreeTimePanels[5,0] := Panel50;
FreeTimePanels[6,0] := Panel60;
Ошибка (Access Violation), когда задаю свойства:
if OnePair = "1" then FreeTimePanels[d,p].Color := clFuchsia;
if OnePair = "0" then FreeTimePanels[d,p].Color := clLime;
Оба отрывки кода размещены в процедурах, принадлежащих форме.
Что делать, чтобы работало?
← →
lesstab © (2012-02-20 10:48) [14]Извините, тема не попала на первую страницу.
← →
lesstab © (2012-02-20 11:03) [15]Вопрос отменяю. Проблема была в цикле. Обращался к несуществующему элементу. Прошу прошения.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2013.03.22;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.07 c