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

Вниз

перебор Label ов   Найти похожие ветки 

 
dis12345   (2006-12-13 17:30) [0]

подскажите пожалуйста как перебрать в цикле десяток однотипных элементов (например TLabel) И  i -му присвоить соотв значение из массива, когда-то делал а сейчас никак не найду и не вспомню как


 
Ega23 ©   (2006-12-13 17:34) [1]

With Form1 do
begin
 for i:=0 to ComponentCount-1 do
   if (Components[i] is TLabel) then
    if TLabel(Components[i]).Name="MySuperLabel" then
     TLabel(Components[i]).Caption := "lajksgjpsfhgodfngb";
 end;


 
Kostafey ©   (2006-12-13 17:37) [2]

Может это поможет:

http://delphimaster.net/view/2-1165941009/

Нпример, LabelN перебирать по названию.


 
dis12345   (2006-12-13 17:40) [3]

спасибо Ega23 !!!!!!!!!! то что нужно !!!!!!!!!!


 
MsGuns ©   (2006-12-14 01:08) [4]

>dis12345   (13.12.06 17:40) [3]
>спасибо Ega23 !!!!!!!!!! то что нужно !!!!!!!!!!

Ega23 © подсказал идею, но сам данный им код концептуально неверен.


 
novill ©   (2006-12-14 09:14) [5]

> сам данный им код концептуально неверен.

Вот это припечатал! Может покажешь пример кончетуально верного кода?


 
clickmaker ©   (2006-12-14 10:15) [6]

ControlCount, Controls[] тут уместнее


 
ЮЮ ©   (2006-12-14 10:25) [7]


> ControlCount, Controls[] тут уместнее


Зависит, где эти  TLabel разбросаны. А если по разным панелям? Но будучи созданными в IDE, они точно все в TForm.Components


 
Leonid Troyanovsky ©   (2006-12-14 17:36) [8]


> ЮЮ ©   (14.12.06 10:25) [7]

>  Но будучи созданными в IDE, они точно все в TForm.Components


Будучи контролами они точно в Controls парента, независимо
от их Owner (т.е., и необязательно  в IDE).
Сл-но, достаточно перебрать (рекурсивно), начав с формы.

Вырожденные же случаи, когда контрол создан, а парент
не назначен - вырождены.

--
Regards, LVT.


 
MsGuns ©   (2006-12-14 22:09) [9]

>novill ©   (14.12.06 09:14) [5]
>Вот это припечатал! Может покажешь пример кончетуально верного кода?

>With Form1 do

Первая и самая концептуальная - категорически не рекомендуется обращаться к внешним объектам по имени.

>if (Components[i] is TLabel) then

Корректнее так: if Components[i].ClassType=TLabel

В данном случае это не так существенно, но, принятая за методологию, такая "техника" может привести к трудноуловимым багам

> Про преимущество Controls перед Components при переборе визуальных контролов тут уже говорено


 
Loginov Dmitry ©   (2006-12-14 23:43) [10]

> Корректнее так: if Components[i].ClassType=TLabel


Чем же извените, это корректней?


> Сл-но, достаточно перебрать (рекурсивно), начав с формы.


Зачем ентот геморрой, когда проще использовать Components[] и ComponentCount?


 
Anatoly Podgoretsky ©   (2006-12-14 23:44) [11]

> Loginov Dmitry  (14.12.2006 23:43:10)  [10]

Ну и как это решает проблему? Если вообще решает.


 
Loginov Dmitry ©   (2006-12-14 23:58) [12]

А что, у кого-то где-то какая-то проблема?


 
Anatoly Podgoretsky ©   (2006-12-15 00:00) [13]

> Loginov Dmitry  (14.12.2006 23:58:12)  [12]

Похоже у тебя.


 
Loginov Dmitry ©   (2006-12-15 00:09) [14]

> Похоже у тебя.


Енто на что намекать изволите?


 
Anatoly Podgoretsky ©   (2006-12-15 00:11) [15]

> Loginov Dmitry  (15.12.2006 0:09:14)  [14]

А ты о чем спрашиваешь?
И действительно ли хочешь узнать?


 
jack128 ©   (2006-12-15 00:17) [16]

Loginov Dmitry ©   (14.12.06 23:43) [10]
Чем же извените, это корректней?

ничем. Вот если бы задача стояла найти всем компоннеты одного КЛАССА, то решение МсГанза - было бы правельным.

MsGuns ©   (14.12.06 22:09) [9]
Первая и самая концептуальная - категорически не рекомендуется обращаться к внешним объектам по имени.

А кто сказал, что код Еги23 выполняется в методе TForm1 ?

MsGuns ©   (14.12.06 22:09) [9]
> Про преимущество Controls перед Components при переборе визуальных контролов тут уже говорено

Всё зависит от деталей задачи..


 
Юрий Зотов ©   (2006-12-15 00:31) [17]

>>if (Components[i] is TLabel) then
> Корректнее так: if Components[i].ClassType=TLabel

Чи-го??? Чиго-чиго, извините?

type
 TMyLabel = class(TLabel)
 ...
 end;

А теперь что коректнее?


 
MsGuns ©   (2006-12-15 09:18) [18]

Возможно, я несколько неуклюже построил фразу, но имелось в виду то, что сразу "ухватил" jack128, а именно обращение к объекту именно как экземпляру класса, а не его наследников. У Пачеко есть куда лучше пример (там используются методы класса, перекрытые наследниками)



Страницы: 1 вся ветка

Текущий архив: 2006.12.31;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.035 c
15-1166047775
isasa
2006-12-14 01:09
2006.12.31
CreateObject в VBA Excell


3-1161084645
safo
2006-10-17 15:30
2006.12.31
Как трассировать sql-запросы к ODBC?


8-1147104191
Dstr
2006-05-08 20:03
2006.12.31
Stream и звук


3-1161036521
БогданБ
2006-10-17 02:08
2006.12.31
Как указатель строки DBGridEh SQL запроса сопоставить с базой.


15-1165778907
transp
2006-12-10 22:28
2006.12.31
Неправильная форма Splash a