![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как групировать несколько компонент, чтобы изменить одно свойство [D7, WinXP]
Boroda Oleg © (2004-06-30 15:30:00)Имеем Label1, Label2, Edit1, Edit2
Можно ли в Дельфи как-то записать одним выражением так, чтобы у всех их изменилось свойство Enabled?
Что-то вроде (так, правда, не работает :(():
(Label1,Label2,Edit1,Edit2).Enabled:=false;
Sandman25 (2004-06-30 16:56:00) [1][12] Boroda Oleg (30.06.04 16:50)
Включите настройку Range checking в Project-Options-Compiler. Будет гораздо легче находить подобные ошибки выхода индекса за пределы массива
Boroda Oleg (2004-06-30 16:50:00) [2]Заменил
for i := 0 to length(A) do
на
for I := Low(A) to High(A) do
и все пошло.
Спасибо!!!
Sandman25 (2004-06-30 16:18:00) [3]type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure MySetEnabled(const Arr: array of TControl; Value: Boolean);
var
I: integer;
begin
for I := Low(Arr) to High(Arr) do
Arr[I].Enabled := Value;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
MySetEnabled([Button1, Button2], False);
end;
Button3 не дизъэблится.
Boroda Oleg (2004-06-30 16:15:00) [4]Дошло. Нужно было в квадратные скобки заключить :))
Тут другое вылезло. Если я вызываю процедуру с параметром Enabled = false, то у меня вся форма энаблится. Т. е. перестают на ней работать все кнопки, включая те, которые я вообще не трогаю.
Sandman25 (2004-06-30 16:13:00) [5]Найдите 10 отличий.
А еще лучше почитайте главу Open array constructors в спарвке
Boroda oleg (2004-06-30 16:00:00) [6]Что [1]??
Sandman25 (2004-06-30 15:58:00) [7][1]
Boroda Oleg (2004-06-30 15:57:00) [8]Сделал так:
procedure MySetEnabled(const A: array of TControl; Value: Boolean);
var i : integer;
begin
for i := 0 to length(A) do
A[i].Enabled:=value;
end;
Вызываю:
MySetEnabled(Label1,Label2,DBEdit1,DBDateEdit1,true);
Выдает ошибку о несоответствии типов 'Array' и 'TLabel'
begin...end (2004-06-30 15:40:00) [9]Или массив. Или динамически.
Iconka (2004-06-30 15:39:00) [10]Создавай TList с сылками на компоненты и в цикле обрабатывай
Sandman25 (2004-06-30 15:39:00) [11]procedure MySetEnabled(const A: array of TControl; Value: Boolean = True);
Boroda Oleg (2004-06-30 15:36:00) [12]Угу. А как в таком случае сформировать MySetEnabled?
Чтобы можно было засылать n компонент, да еще и разных типов? Я что-то не додумался.
Sandman25 (2004-06-30 15:31:00) [13]Можно.
MySetEnabled([Label1, Label2, Edit1, Edit2])