Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.041 c
3-1126865844
V.I.P.er
2005-09-16 14:17
2005.10.30
Пароль на PARADOX7


2-1128608160
Кефир87
2005-10-06 18:16
2005.10.30
Трассировка DLL файлов


4-1125065609
heady
2005-08-26 18:13
2005.10.30
получить последний(текущий)адрес из открытого IE


1-1128600494
Top
2005-10-06 16:08
2005.10.30
как сделать рандом с уклоном?


2-1128252504
Volf_555
2005-10-02 15:28
2005.10.30
Как в поле ввода пароля вводимый пароль отображать звёздочками?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский