Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как поменять цвет для разных едитов одной строкой кода


{bas} ©   (2002-11-04 14:27:00) 

В обработчике OnEnter для разных элементов ввода(TDBEdit, TDBLookUpCombo and so on) я пишу так
(Sender as TWinControl).Color := clBlack; - компилятор ругается и говорит что это свойство не определено, хотя TDBEdit и другие его наследуют у TWinControl.
Если я пишу так:
(Sender as TDBEdit).Color := clBlack; - то все ок

В чем тут грабли????????????????


{bas}   (2002-11-04 15:58:00) [1]

спасибо Skier & Anatoly Podgoretsky


Skier   (2002-11-04 15:51:00) [2]

>{bas}
Или см. Anatoly Podgoretsky © (04.11.02 15:45)
Или можно так в одном модуле (например ColorChange.pas) пишешь

procedure ChangeColor(AControl: TControl; const
AColor : TColor );

implementation

type

THackControl = class(TControl);


procedure ChangeColor(AControl: TControl; const
AColor : TColor );
begin
if AControl <> nil then
THackControl(AControl).Color := AColor;
end;

И потом только говоришь uses ColorChange.pas и
вызываешь ChangeColor(...)


Anatoly Podgoretsky   (2002-11-04 15:45:00) [3]

Тогда тебе надо создать нормального наследника и размесить его на палитре компонентов


{bas}   (2002-11-04 15:39:00) [4]

>>Skier
Я хочу для многих модулей (около 10) использовать этот прием, и что мне в каждом объявлять - я объявил в общем.
А что правильнее в каждом объявлять ??


Skier   (2002-11-04 15:31:00) [5]

>{bas}
В том же модулегде пишешь THackControl(Sender).Color := clBlack; объяви класс THackControl = class(TControl) end;


{bas}   (2002-11-04 15:25:00) [6]

>>Skier © (04.11.02 15:20)

В одном модуле обявляю так:
type
THackControl = class(TControl)
public
property Color;
end;

При таком обявлении выдает ошибку что не определено свойство:
THackControl = class(TControl)
end;

а в другом использую:
procedure TForm1.Edit1Enter(Sender: TObject);
begin
THackControl(Sender).Color := clBlack;
end;


Skier   (2002-11-04 15:20:00) [7]

>{bas}

> компилятор ругается


Как присваиваешь цвет ?
Покажи...


{bas}   (2002-11-04 15:15:00) [8]

>> Anatoly Podgoretsky © (04.11.02 15:10)
без

public
property Color;
end;

компилятор ругается


Anatoly Podgoretsky   (2002-11-04 15:10:00) [9]

{bas} (04.11.02 15:01)
За исключение, что

public
property Color;
end;

лишнее


Skier   (2002-11-04 15:07:00) [10]

>{bas}
Да нет, всё нормально.
Таким приёмом частенько пользуются...


{bas}   (2002-11-04 15:05:00) [11]

>>Skier
не просто после твой подсказки сделал решил спросить правильно или надо как то по другому делать.


Skier   (2002-11-04 15:02:00) [12]

>{bas}

> Это правильно??

Вполне...И что ?


{bas}   (2002-11-04 15:01:00) [13]

я сделал так
type
THackControl = class(TControl)
public
property Color;
end;

//.............
begin
//.............
THackControl(Sender).Color := clBlack;
//.............
end;

Это правильно??


Skier   (2002-11-04 14:40:00) [14]

>{bas}
св-во Color объявлено в классе TControl как protected.

Попробуй так :


type
THackControl = class(TControl);

//.............
begin
//.............
THackControl(Sender).Color := clBlack;
//.............
end;


Anatoly Podgoretsky   (2002-11-04 14:36:00) [15]

Оно Protected


Наверх

Титульная страница Поиск, карта сайта Написать письмо