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

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

VISIBLE


Страницы:   1 2

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;

Но назад в видимые уже не переключить.


Страницы:   1 2

Наверх

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