Форум: "Основная";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
ВнизСвойство "color" Найти похожие ветки
← →
Alex7 (2005-10-04 11:14) [0]Подскажите , пожалуйста как изменить "color" всех размещенных на форме компонентов редактирования
(Edit, SpinEdit, ComboBox, Memo и т.п.) .
Не проходят на первый взгляд очевидные варианты
1) For i:=0 To ControlCount-1 Do
Controls[i].Color := clred;
2) For i:=0 To ControlCount-1 Do
If Controls[i] is TWinControl and not (Controls[i] is TButton) Then
TWinControl(Controls[i]).Color := clred;
А проходит, как мне кажется, абсурдное
For i:=0 To ControlCount-1 Do
TEdit(Controls[i]).Color := clred;
При этом краснеет все и Edit и SpinEdit и ComboBox и Memo.
Спасибо.
← →
Котик Б (2005-10-04 12:06) [1]Я бы сделал примерно так:
type
TMyControl = class(TControl)
public
property Color;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
a: array[0..2] of TClass = (TCustomEdit, TCustomMemo, TComboBox);
var
i, j: integer;
begin
for i := 0 to ControlCount -1 do begin
for j := Low(a) to High(a) do
if Controls[i] is a[j]
then TMyControl(Controls[i]).Color := clRed;
end;
end;
← →
Котик Б (2005-10-04 12:07) [2]Я бы сделал примерно так:
type
TMyControl = class(TControl)
public
property Color;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
a: array[0..2] of TClass = (TCustomEdit, TCustomMemo, TComboBox);
var
i, j: integer;
begin
for i := 0 to ControlCount -1 do begin
for j := Low(a) to High(a) do
if Controls[i] is a[j]
then TMyControl(Controls[i]).Color := clRed;
end;
end;
← →
Котик Б (2005-10-04 12:08) [3]Прошу прощения за дубль :-[
← →
Чапаев © (2005-10-04 13:13) [4]Может стоит всем Controls[I].ParentColor:=True;?
← →
Alex7 (2005-10-05 08:44) [5]Большое спасибо! Все работает.
Но, каюсь, вопросы остались:
1. Чем свойство "Color" отличается, например, от "Enabled"?
Почему простая кострукция
For i:=0 To ControlCount-1 Do Controls[i].Enabled=True;
для "Enabled" работает, а для "Color" нет?
2. Из рекомендации выходит, что TSpinEdit наследник
TEdit, а из Help того не видно.(Там указан TWidGetControl).
3.Все работает и без объявления Property Color.
Что оно дает ?
4. Не уловил совета по "ParentColor". Если для возврата
к исходному цвету, то не срабатывает.
Еще раз большое спасибо.
← →
ЮЮ © (2005-10-05 09:54) [6]1) потому, что Color у TControl - protected
Type TControlAccess = class(TControl);
for i := 0 To ControlCount - 1 do TControlAccess (Controls[i]).Color := ... ;
такое объявление позволяет использовать protected св-ва класса TControlAccess или преведенного к этоиу типу объекта другого класса-предка
В твоем варианте TEdit(Controls[i]).Color := clred; ты приводишь к типу TEdit, у которого Color уже published
...
2) TSpinEdit что в справки из CLX, а не VCL, а там и TEdit наследник TWidпetControl (TWidgetControl is the base class for all controls that are wrappers for Qt widgets.)
3) Все работает и без объявления Property Color. Что оно дает ?
Ещё один метод "доступа" к protected-св-ву предка - перенос его в public-секцию
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2005.10.30;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.038 c