Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Свойство "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;
Скачать: CL | DM;

Наверх




Память: 0.46 MB
Время: 0.039 c
1-1128354172
Alex_1234
2005-10-03 19:42
2005.10.30
Подскажите алгоритм реализацию "плагинной" программы...


1-1128868680
AndrewLi
2005-10-09 18:38
2005.10.30
Соблюдение формата адреса электронной почты


5-1107759708
h010d
2005-02-07 10:01
2005.10.30
TreeView с колонками


14-1128895230
mensch
2005-10-10 02:00
2005.10.30
как сдублировать электронный ключ VIZIT?


4-1123697468
DinoRay
2005-08-10 22:11
2005.10.30
Перехват функций Dll





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский