![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
VISIBLE
ankazh © (2012-06-17 19:04:00)Есть ли возможность сделать 1. все компоненты на форме невидимыми 2. сделать невидимыми компонеты определенного класса.
Inovet (2012-06-19 17:31:00) [1]> [29] Dennis I. Komarov © (19.06.12 14:47)
Пусть автор озвучит исходную задачу.
Dennis I. Komarov (2012-06-19 14:47:00) [2]ИМХО XYZ
Автору нужно Create in run-time...
brother (2012-06-18 10:47:00) [3]> [27] sniknik © (18.06.12 10:01)
> > С гегельянской точки зрения
> программистам нужно запретить изучать философию...
и правильную постановку ТЗ )
sniknik (2012-06-18 10:01:00) [4]> С гегельянской точки зрения
программистам нужно запретить изучать философию...
Омлет (2012-06-18 09:43:00) [5]> sniknik © (18.06.12 09:38) [25]
На столе стоит поднос, а на подносе - стакан.
С гегельянской точки зрения стакан стоит и на подносе, и на столе одновременно ))
sniknik (2012-06-18 09:38:00) [6]> как их все скрыть без рекурсии?
нафига? если они на панельках а не на форме. (см. [0])
sniknik (2012-06-18 09:37:00) [7]> зачем их еще приеудительно инвизить?
до меня дошло, например невидимыми нужно делать эдиты, а один из, лежит на панели (не на форме, в чилдах формы его не будет)... значит делаем и его, не обращая внимание на вопрос
> 1. все компоненты на форменевидимыми 2. сделать невидимыми компонеты определенного класса.
хотя, конечно это уже философия... что именно считать лежащим на форме, считать ли детей, и ее (что делаем и зачем) естественно проигнорировали.
Омлет (2012-06-18 09:35:00) [8]> sniknik © (18.06.12 07:52) [19]
Смысл - в задаче:
> сделать невидимыми компонеты определенного класса(см. [0])
Если, к примеру, едиты раскиданы по разным панелькам, как их все скрыть без рекурсии?
sniknik (2012-06-18 09:23:00) [9]> Для Controls нужна рекурсия.
> нафига?
не код но смысл... я это спрашивал, а не как сделать.
brother (2012-06-18 09:08:00) [10]эээ, так если AParent невидим, то и все, что на нем тож не видно, зачем их еще приеудительно инвизить?
Омлет (2012-06-18 08:58:00) [11]> sniknik © (18.06.12 07:52) [19]
Для Controls нужна рекурсия.
procedure SetControlsVisible(AParent: TWinControl; Value: boolean; AClass: TClass);
var
i: integer;
Ctrl: TControl;
begin
for i := 0 to AParent.ControlCount - 1 do
begin
Ctrl := AParent.Controls[i];
if Ctrl is AClass then
Ctrl.Visible := Value;
if Ctrl is TWinControl then
SetControlsVisible(TWinControl(Ctrl), Value, AClass);
end;
end;
sniknik (2012-06-18 07:52:00) [12]> Так тогда нужно рекурсию включать :(
нафига?
> А по components не надо чтоли?
не надо, ни с components ни с Controls.
Anatoly Podgoretsky (2012-06-18 07:22:00) [13]> Германн (18.06.2012 02:17:17) [17]
А по components не надо чтоли?
Германн (2012-06-18 02:17:00) [14]
> Anatoly Podgoretsky © (17.06.12 19:50) [6]
>
>
> > Inovet © (17.06.12 19:47) [5]
>
> Поскольку речь об визуальных компонентах, то надо по Controls
>
Так тогда нужно рекурсию включать :(
Inovet (2012-06-17 23:57:00) [15]> [15] Омлет © (17.06.12 23:12)
> Всё работает.
Да, меня копипаст подвёл.
Омлет (2012-06-17 23:12:00) [16]> Но снова видимыми их так не сделать, сам же говорил.
Почему не сделать? Всё работает.
procedure TForm1.SetControlsVisible(Value: boolean; AClass: TClass);
var
i: integer;
begin
for i := 0 to ControlCount - 1 do
if Controls[i] is AClass then
Controls[i].Visible := Value;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
SetControlsVisible(not Edit1.Visible, TEdit);
end;
Inovet (2012-06-17 22:30:00) [17]> [13] Anatoly Podgoretsky © (17.06.12 21:42)
> Это еще хуже, чревато рантайм ошибками,
Я ниже поправил. Разумеется везде заменить Components на Control. Но снова видимыми их так не сделать, сам же говорил.
Anatoly Podgoretsky (2012-06-17 21:42:00) [18]> Inovet (17.06.2012 20:02:09) [9]
Это еще хуже, чревато рантайм ошибками, поскольку большинство компонент не
являются TControl и не имеет свойства Visible
Непонятно зачем все эти извращения? Когда Controls полностью и
надежнорешают задачу
stas (2012-06-17 21:24:00) [19]А еще можно положить на форму панель и делать ее не видимой.
Inovet (2012-06-17 20:06:00) [20]> [9] Inovet © (17.06.12 20:02)
> (Components[i] as TControl).Visible := false;
в смысле
Controls[i].Visible := false;
Но назад в видимые уже не переключить.