Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

tag [D6, WinXP]


Glonia Zbanov ©   (2002-03-27 10:44:00) 

Как через tag обратится к нескольким компонентам - скажем у части меню и кнопок поменять enable на false


reonid   (2002-03-27 12:05:00) [1]

2PVOzerski
Зато у меня проще :)
Хотя, если там будет порядка нескольких сотен тысяч компонент,
думаю, будет тормозить :)


PVOzerski   (2002-03-27 11:45:00) [2]

2reonid:
А у меня быстрее работать будет :^). Особенно, если компонентов на форме много. Тогда уж надо
считать, сколько MenuItem"ов нашли и вовремя break делать...


reonid   (2002-03-27 11:39:00) [3]

for i := 0 to {MainForm.}ComponentCount-1 do
begin
if (Components[i] is TMenuItem) and (Components[i].Tag = 3) then
TMenuItem(Components[i]).Enabled := False;
end;


PVOzerski   (2002-03-27 11:33:00) [4]

Можно сделать другое:
Поскольку в Delphi32 tag 4-байтовый, как и pointer, можно через него организовать связанный список
тех же MenuItems.
В FormCreate делаем что-то типа

MenuItem1.tag:=longint(MenuItem2);
MenuItem2.tag:=longint(MenuItem3);

и т.д.,
а потом по рекурсии:

procedure Form1.MenuItem1Click(Sender:tObject);
begin
if Sender is tMenuItem then
with tMenuItem(Sender)do
begin
Enabled:=not Enabled;
if Tag<>0 then
MenuItem1Click(tObject(Tag));
end;
end;

Не проверял, но, IMHO, должно сработать.


kull   (2002-03-27 11:17:00) [5]

Нет, мне кажется, это из области фантастики.
Прийдется все таки перебрать нужные пункты.


Glonia Zbanov   (2002-03-27 10:55:00) [6]

Могу я при запуске программы сказать менюитема с tag=3 enable=false
но не перечислять их поочереди а сразу ко всем.


kull   (2002-03-27 10:51:00) [7]

Не понял. Переведи...


Наверх

Титульная страница Поиск, карта сайта Написать письмо