![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как поменять цвет для разных едитов одной строкой кода
{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