Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Вниз

Помогите упростить код   Найти похожие ветки 

 
Вопрошающий   (2007-08-15 10:05) [0]

Строю интерфейс через компоненты DevExpress. В одной из процедур присутствует такой код:
 if Sender is TcxDBMaskEdit then with TcxDBMaskEdit(Sender) do begin
   Style.Color := clSkyBlue;
   Style.Font.Color := clWindowText;
 end else if Sender is TcxTextEdit then with TcxTextEdit(Sender) do begin
..
 end else if Sender is TcxExtLookupComboBox then with TcxExtLookupComboBox(Sender) do begin
..
 end else if Sender is TcxCheckBox then with TcxCheckBox(Sender) do begin
..
 end else if Sender is TcxTextEdit then with TcxTextEdit(Sender) do begin
..
 end else if Sender is TcxDateEdit then with TcxDateEdit(Sender) do begin
..
 end;


При необходимости добавления нового класса надо добавлять еще одну строку. А процедур с похожим подходом около десяти :(
Можно ли как-то этот подход сделать "универсальным", т.е. смотреть на класс Sender"a и присваивать атрибуты?


 
Dimka Maslov ©   (2007-08-15 10:15) [1]

Всем компонентам определённого класса прсваивается одинаковое значение свойства Tag, которое и анализируется в процедуре
case (Sender as TComponent).Tag of
 
end;


Если все эти компоненты наследованы от одного базового класса, то наверняка свойства у них одинаковые. И если надо утанавливать значения одних и тех же свойств, то полезно завести массив
StyleColors = array [1..xx] of TColor = (clSkyBlue, ...... )
StyleFontColors = array[1..xx] of TColor = (clWindowText, .....)
тогда можно написать
with Sender as TBasicClass do begin
 Style.Color := StyleColors[Tag]
 Style.Font.Color := StyleFontColors[Tag]
end;


 
Думкин ©   (2007-08-15 10:32) [2]

SetPropValue


 
Вопрошающий   (2007-08-16 11:07) [3]


> Всем компонентам определённого класса прсваивается одинаковое
> значение свойства Tag, которое и анализируется в процедуре

Tag уже юзается для своих нужд :(


> Если все эти компоненты наследованы от одного базового класса

до некоторых свойств можно достучаться через базовый класс, до некоторых - нет (такое наследование)


> SetPropValue

Ммммм... Делфи под рукой сейчас нет, но вроде там используется строковый параметр с названием проперти, так?
Если есть такое свойство, как Style.Font типа TFont, как мне достучаться до этого свойства, потому что, если я ничего не путаю, при "Style.Font" вылетает ошибка доступа


 
Думкин ©   (2007-08-16 11:16) [4]

Так ты к TFont и стучись, а не к к тому у кого он.


 
Вопрошающий   (2007-08-17 02:25) [5]

Спасибо. Попробую



Страницы: 1 вся ветка

Форум: "Прочее";
Текущий архив: 2007.09.16;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.057 c
2-1188077785
Popay
2007-08-26 01:36
2007.09.16
зависон SendMessage


2-1187987876
TPel
2007-08-25 00:37
2007.09.16
Антивирусник учебный


2-1187686683
Daedr
2007-08-21 12:58
2007.09.16
В реестр


2-1188031167
led
2007-08-25 12:39
2007.09.16
Формы


2-1187968392
master_asasin
2007-08-24 19:13
2007.09.16
Инфра звук





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