Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.04.25;
Скачать: CL | DM;

Вниз

Как обратиться к компоненту по индексу из цикла?   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
14-1080624885
Layner
2004-03-30 09:34
2004.04.25
НАТО на границе России.


6-1077768546
Budy
2004-02-26 07:09
2004.04.25
Как узнать свой IP


3-1080335030
Vemer
2004-03-27 00:03
2004.04.25
SQL запрос без "IN" составить хочу..


3-1079684954
ikondakov
2004-03-19 11:29
2004.04.25
Delphi и SPSS


3-1080389025
Новичек2
2004-03-27 15:03
2004.04.25
TDBAdvStringGrid и выравнивание по вертикали.