Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКак обратиться к компоненту по индексу из цикла? Найти похожие ветки
← →
ALF (2004-04-08 12:43) [0]Можно ли из цикла i:=1 to 100 например обратиться к к.л. компоненту примерно вот так:
Button[i].Enabled:=True;
Т.е. смысл в обращении к компоненту в зависимости от значения i.
Спасибо заранее.
← →
Тимохов © (2004-04-08 12:45) [1]используй components и controls для просмотра всех компонентов и контьролов формы.
← →
Внук © (2004-04-08 12:50) [2]Ну почему ж нельзя, если есть такой массив компонентов.
← →
Denis © (2004-04-08 13:35) [3]Я обычно использую Tag для идентификации компонента...
← →
ALF (2004-04-08 14:38) [4]Вот у меня много ToolButton"ов. Надо обратиться к j-тому из них. Какой код будет в данном случае?
← →
Алхимик © (2004-04-08 14:40) [5]components[j] as TToolButton
+ проверка что j < ComponentCount
← →
Семен Сорокин © (2004-04-08 14:42) [6]
var
_i, _j: integer;
...
_j := 0;
for _i := 0 to ComponentsCount-1 dp
if Components[_i] is TToolButton then begin
inc(_j);
if _j = j then begin
TToolButton(Components[_i]).// Обращение
Break
end
end;
← →
Тимохов © (2004-04-08 14:43) [7]К I-му элементу можно обратится, если если у элементов подразумевается порядок. Правильно?
Что вы подразумеваете под порядком?
Бегите по списку components, и ищите в них свои toolbuttons
for i := 0 to componentcount-1 do
begin
if compenents[i] is ttoolbutton then compenents[i] as ttoolbutton ...
end;
← →
Denis © (2004-04-08 14:44) [8]procedure ButtonCl;
var
i:integer;
begin
for i:=0 to fmcex.ComponentCount-1 do
begin
if fmCex.Components[i] is TBitBtn
then
if (fmCex.Components[i] as TBitBtn).Tag=10
then
DoSomething
end;
end;
← →
ALF (2004-04-08 23:11) [9]А я вот такое решение нашел:
if pos("А", Memo1.Text)=j then
TToolbutton(Form1.FindComponent("ToolButton"+inttostr(j))).ImageIndex:=0;
← →
_Sh_ (2004-04-09 00:48) [10]Можешь завести массив из компонентов:
var
Buttons: array [0..100] of TButton;
Заполни его (где-нибудь в OnCreate):
Buttons [0]:=btOk;
Buttons [1]:=btCancel;
for I:=2 to 5 do
Buttons [I]:=fmMain.FindComponent ("Button"+IntToStr (I));
А потом можешь обрашаться к нему как сам написал.
← →
Семен Сорокин © (2004-04-09 09:51) [11]ALF (08.04.04 23:11) [9]
А я вот такое решение нашел:
а ты глянь как FindComponent работает, он именно и вызывает цикл по ComponentCount, поэтому циклически обращаться по FindComponent будет дольше, чем один раз пробежаться по всем. :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.031 c