Главная страница
    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.037 c
2-1128600837
Sysanin
2005-10-06 16:13
2005.10.30
Переменные в функциях


10-1106223619
uncle
2005-01-20 15:20
2005.10.30
body for IHTMLDocument2


1-1128429401
tw
2005-10-04 16:36
2005.10.30
Уменьшение размера приложения


2-1128787930
The Sound
2005-10-08 20:12
2005.10.30
Не кодируемый текст.


14-1128690438
fran
2005-10-07 17:07
2005.10.30
off top: Есть ли дефрагментатор диска NTFS с кластером 8к?





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