Форум: "Основная";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Внизtag Найти похожие ветки
← →
Glonia Zbanov (2002-03-27 10:44) [0]Как через tag обратится к нескольким компонентам - скажем у части меню и кнопок поменять enable на false
← →
kull (2002-03-27 10:51) [1]Не понял. Переведи...
← →
Glonia Zbanov (2002-03-27 10:55) [2]Могу я при запуске программы сказать менюитема с tag=3 enable=false
но не перечислять их поочереди а сразу ко всем.
← →
kull (2002-03-27 11:17) [3]Нет, мне кажется, это из области фантастики.
Прийдется все таки перебрать нужные пункты.
← →
PVOzerski (2002-03-27 11:33) [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, должно сработать.
← →
reonid (2002-03-27 11:39) [5]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:45) [6]2reonid:
А у меня быстрее работать будет :^). Особенно, если компонентов на форме много. Тогда уж надо
считать, сколько MenuItem"ов нашли и вовремя break делать...
← →
reonid (2002-03-27 12:05) [7]2PVOzerski
Зато у меня проще :)
Хотя, если там будет порядка нескольких сотен тысяч компонент,
думаю, будет тормозить :)
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.04.08;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c