|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
На форме имеется 10 объектов TLabel, возможно ли в цикле через переменную обращаться к свойстам данных объектов? Например, Код: pascal 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 08:18 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa, Можно, сделав массив ссылок на них. Либо установив в Tag нужный номер и перебором ComponentCount. Либо перебором ComponentCount и анализом Name/Caption ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 10:59 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
Gerasimenko Насколько я понял, если перебором, то Component[i] не обязательно равен Label[i] А в массив ссылок получается можно привязать индекс к конкретному объекту? Т.е.: Код: pascal 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 12:10 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa Gerasimenko Насколько я понял, если перебором, то Component[i] не обязательно равен Label[i] А в массив ссылок получается можно привязать индекс к конкретному объекту? Т.е.: Код: pascal 1. 2. 3. 4. 5.
1. Если использовать Tag в качестве индекса, то можно перебором 2. Да ps в твоем случае лучше использовать массив record - ов типа Код: pascal 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 12:54 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa На форме имеется 10 объектов TLabel, возможно ли в цикле через переменную обращаться к свойстам данных объектов? Возможно, но массив именно TLabel нужно построить: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 13:01 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa, И, да, если использовать в имени компонента нумерацию, то можно через FindComponent ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 13:02 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa На форме имеется 10 объектов TLabel, возможно ли в цикле через переменную обращаться к свойстам данных объектов? Возможно всё. А если выбирать для каждой задачи правильное решение, то многое возможное становится не нужным. ... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 13:33 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
Gerasimenko То, что нужно, благодарю. Код: pascal 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
22.08.2021, 16:00 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
var Labels := TArray<TLabel>.Create(Label1, Label2, ...) ну и дальше шуровать по нему ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 10:22 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa, Только каждый FindComponent() - то тоже цикл for с перебором всех компонентов. ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 13:54 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
Gerasimenko 1. Если использовать Tag в качестве индекса, то можно перебором 2. Да ps в твоем случае лучше использовать массив record - ов типа Код: pascal 1. 2. 3. 4. 5. 6.
Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
шутка ... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 15:59 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa Gerasimenko То, что нужно, благодарю. Код: pascal 1. 2. 3.
плохое решение. лучше так: Код: pascal 1. 2. 3. 4. 5. 6.
... |
|||
:
Нравится:
Не нравится:
|
|||
23.08.2021, 17:55 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
makhaon, а как в таком решении убедиться, что Label[I] получила 'Текст ' + IntToStr(I)? Нужен бцдут еще один цикл.. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.08.2021, 15:50 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa, Ну добавь еще одну переменную: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 17:01 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
makhaon, мне надо, чтобы Label1.Caption := 'Текст 1', Label2.Caption := 'Текст 2', ..., Labeli.Caption := 'Текст i' Код: pascal 1.
а как тут, я могу быть уверен, что Components[1]==Label1, Components[2]==Label2, ..., Components[i]==Labeli? ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 18:36 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa, Использовать Tag. Говорили же уже 5 раз. Указать его, а затем в цикле на него ориентироваться. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 19:19 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa makhaon, мне надо, чтобы Label1.Caption := 'Текст 1', Label2.Caption := 'Текст 2', ..., Labeli.Caption := 'Текст i' Код: pascal 1.
а как тут, я могу быть уверен, что Components[1]==Label1, Components[2]==Label2, ..., Components[i]==Labeli? Код: pascal 1. 2. 3. 4. 5. 6. 7.
... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 19:26 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa Код: pascal 1. 2. 3. 4. 5.
Судя по наличию TLabel и TEdit - Вам бы очень подошел какой-либо Grid (самое простое - TStringGrid, но могут быть и ньюансы) ... |
|||
:
Нравится:
Не нравится:
|
|||
26.08.2021, 20:09 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
makhaon AnWa, Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
До меня дошло, если имена объектов возрастают соответственно их добавлению, а не были присвоены после и в разброс, то код справидлив, только j начинать с 1 makhaon Код: pascal 1. 2. 3. 4. 5. 6. 7.
Своим примером я хотел показать, что в конкретный лэйбел, мне нужно конкретное значение, а не так буквально))) ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 00:21 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
YuRock AnWa, Использовать Tag. Говорили же уже 5 раз. Указать его, а затем в цикле на него ориентироваться. А если findcomponent тот же цикл, если ли смысл использовать другой цикл? Но, да, вариант с Tag я как то пропустил ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 00:24 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
[quot x1ca4064#22364365] AnWa Судя по наличию TLabel и TEdit - Вам бы очень подошел какой-либо Grid (самое простое - TStringGrid, но могут быть и ньюансы) Да, я тоже начинаю склоняться к использованию Grid, вот можно было бы там также просто менять цвет яцейки свойством Color( Код: pascal 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 00:30 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa YuRock AnWa, Использовать Tag. Говорили же уже 5 раз. Указать его, а затем в цикле на него ориентироваться. А если findcomponent тот же цикл, если ли смысл использовать другой цикл? Но, да, вариант с Tag я как то пропустил Лично я уже давно говорил, что findcomponent это функция придуманная троешниками для троешников. Грамотному разработчику она никогда не может быть необходима. И с очень большой вероятностью никогда не может быть полезна. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 03:01 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa Да, я тоже начинаю склоняться к использованию Grid, вот можно было бы там также просто менять цвет яцейки свойством Color( Код: pascal 1.
http://avemey.narod.ru/zcolorstringgrid/zcolorstringgrid.html ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 09:33 |
|
Динамическое обращение к объектам
|
|||
---|---|---|---|
#18+
AnWa YuRock AnWa, Использовать Tag. Говорили же уже 5 раз. Указать его, а затем в цикле на него ориентироваться. А если findcomponent тот же цикл, если ли смысл использовать другой цикл? Но, да, вариант с Tag я как то пропустил 1. findcomponent ты вызываешь уже в цикле. В итоге у тебя N+1 циклов. 2. findcomponent сравнивает строки, что намного хуже, чем числа. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.08.2021, 16:21 |
|
|
start [/forum/topic.php?fid=58&msg=40092672&tid=2037079]: |
0ms |
get settings: |
12ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
45ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
others: | 16ms |
total: | 168ms |
0 / 0 |